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

Voir le sujet précédent Voir le sujet suivant Aller en bas

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

Message  pascal le 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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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

Message  -ed- le 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.

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum