Bien programmer en langage C
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
-20%
Le deal à ne pas rater :
-20% sur le Lot de 2 écrans PC GIGABYTE 27″ LED M27Q
429 € 539 €
Voir le deal

pas sur de structure de données du résultat du problème

2 participants

Aller en bas

pas sur de structure de données du résultat du problème Empty pas sur de structure de données du résultat du problème

Message  pascal Dim 23 Aoû 2009 - 0:34

Salut,

Je dois écrire un programme en c qui permet de placer 6 taches sur 3 machines tel que une fois la tache est terminée placer la tache suivante sur la machine la plus disponible de façon à minimiser le temps totale d'exécution .
On connait:
pour la tache:
-sa durée
-sa date date de début souhaité
pour les machine :
- sa date de disponibilité
à t=0, date de disponibilité =0
à t, date de disponibilité de la machine est date de début prévu de la tache+sa durée d'exécution.
Mon algorithme fonctionne comme suit :
1-déterminer la liste des taches par ordre croissant de leur durée
2-affecter les 3 premières taches de la listes respectivement sur m1, m2 et m3.
3-calculer la date de fin de chaque tache qui est égale à la date de disponibilité de machine :durée de tache+date de début souhaité
4-affecter les taches restantes de la liste respectivement sur la machine la plus disponible tant que la liste des taches est <>0
voici mon code :
Code:
[code][/code]
#include <stdio.h>
#include <stdlib.h>
#define booleen int
#define TRUE 1
#define FALSE 0
typedef struct
  {
      int release_date;
      int duree;
      int due_date;
  }tache;




void selection(tache job[],  int *tab_indices, int nbrejob)
{
    int i, min, j ;
    tache x;

    if (tab_indices)
          for (i=0;i<nbrejob;i++)
              tab_indices[i] = i;

    for(i = 0 ; i < nbrejob-1 ; i++)
    {
        min = i;
        for(j = i+1 ; j < nbrejob ; j++)

                  if(job[j].duree < job[min].duree)
                  min = j;


        if(min != i)
        {
            x = job[i];
            job[i] = job[min];
            job[min] = x;

            int indice = tab_indices[i];
            tab_indices[i] = tab_indices[min];
            tab_indices[min] = indice;

        }
    }
}






int main()
{
  tache job[6]={{0,10,18},{3,6,15},{2,4,22},{4,9,23},{6,2,14},{5,6,12}};
  int k;
  booleen t; /*date de disponibilité des machines*/

  int tab_indices[6];
  selection(job,tab_indices, 6);
  printf("****voici les durees ordonnancees par ordre croissant :\n");
  for (k=0;k<6;k++)
  printf("%d",job[k].duree);
  printf("\n");
  printf("**** voici priority list:\n");
  for(k=0;k<6;k++)
  {
      printf("%d",tab_indices[k]);
  }
  printf("\n");
  if(t==FALSE)
  printf("placer les trois premières jobs respectivement sur m1, m2 et m3");
  else
  printf("placer le autres taches restantes respectivement  sur la machine la plus disponible(disponibilite :duree+date de debut souhaite ' release_date')");


  return 0;
}
comme vous pouvez vous en douter, je ne suis pas sûr de la structure de données concernant la partie de programme qui concerne l'affectation des taches sur les machines. comme faire cela?Un coup d'aide me sera certainement utile!
En vous remerciant d'avance..

pascal
Bavard
Bavard

Messages : 20
Date d'inscription : 20/08/2009

Revenir en haut Aller en bas

pas sur de structure de données du résultat du problème Empty Re: pas sur de structure de données du résultat du problème

Message  -ed- Dim 23 Aoû 2009 - 20:19

Dans main(), la valeur de t est indéterminée. Le resultat du test de t est indéfini.
-ed-
-ed-
Admin
Admin

Messages : 290
Date d'inscription : 26/05/2008
Age : 67
Localisation : Paris 14eme arrondissement (75, France)

http://bien-programmer.fr

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser