un programme m'echappe
2 participants
Page 1 sur 1
un programme m'echappe
Salut,
Ce petit programme ne se compile pas de tout avec visual c++ alors qu'il s'exécute correctement avec codeblocks. Je n'ai pas pu corriger les bugs affichés.Pourriez vous m'aider?
Merci d'avance.
Voici le code
Ce petit programme ne se compile pas de tout avec visual c++ alors qu'il s'exécute correctement avec codeblocks. Je n'ai pas pu corriger les bugs affichés.Pourriez vous m'aider?
Merci d'avance.
Voici le code
- Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int (*compfn)(const void*, const void*);
struct tache
{
int release_date;
int duree;
int due_date;
int id_tache;
};
typedef struct
{
int date_disponibilite;
} machine;
struct tache job[] =
{
{ 3, 0, 4, 1 }, {5, 3, 5,2}, {1,4,12,3}, {2,7,10,4}, {4,8,11,5}
};
/*fonction tri par ordre croissant de sa date de fin*/
int compare(struct tache *elem1, struct tache *elem2)
{
if (elem1->due_date < elem2->due_date)
return -1;
else if (elem1->due_date > elem2->due_date)
return 1;
else
return 0;
}
void printarray(void)
{
int i;
for (i = 0; i < 5; i++)
printf(" %d " , job[i].id_tache);
}
int main(void)
{
float temps;
clock_t t1, t2;
t1 = clock();
machine Machines[3];
int id_machineDispo;
int retardsTotaux = 0;
int retards, j, k;
qsort((void *) &job,5, sizeof(struct tache), (compfn)compare);
printf("\n due_date tache par ordre croissant\n");
printarray();
printf("\n");
for (j = 0; j < 3; j++)
{
Machines[j].date_disponibilite = 0;
}
/* pour toute les taches */
for (k = 0; k <5 ; k++)
{
id_machineDispo = 0;
/* trouver la machine disponible plus tot*/
for (j = 0;j < 3; j++)
{
if (Machines[j].date_disponibilite < Machines[id_machineDispo].date_disponibilite)
id_machineDispo = j;
}
/* calculer date fin tache sur machine */
if (k<3)
Machines[id_machineDispo].date_disponibilite += job[k].duree + job[k].release_date;
if(k>=3)
Machines[id_machineDispo].date_disponibilite += job[k].duree;
/* affichage affectation*/
printf("\n date disponibilite machine %d egale : %d ",id_machineDispo, Machines[id_machineDispo].date_disponibilite);
printf("\n placer tache %d sur machine %d", job[k].id_tache, id_machineDispo);
printf("\n");
/* calcul retard et retards totaux */
retards = Machines[id_machineDispo].date_disponibilite-job[k].due_date;
printf("\n retards : %d", retards);
printf("\n");
if (retards > 0)
retardsTotaux += retards;
/* affichage retards totaux */
printf("\n retards totaux : %d\n",retardsTotaux);
}
t2 = clock();
temps = (float)(t2-t1)/CLOCKS_PER_SEC;
/* temps exécution application */
printf("temps = %f\n", temps);
return 0;
}
1>------ Début de la génération*: Projet*: code_c_EDD, Configuration*: Debug Win32 ------
1>Compilation en cours...
1>main.c
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(52) : error C2275: 'machine'*: utilisation non conforme de ce type comme expression
1> c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(19)*: voir la déclaration de 'machine'
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(52) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'Machines'
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(52) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(52) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(53) : error C2143: erreur de syntaxe*: absence de ';' avant 'type'
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(54) : error C2143: erreur de syntaxe*: absence de ';' avant 'type'
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(55) : error C2143: erreur de syntaxe*: absence de ';' avant 'type'
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(62) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(62) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(62) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(64) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(64) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(64) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(67) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(67) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(67) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(70) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(73) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(73) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(73) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(75) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(75) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(75) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(75) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(75) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(75) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(78) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(78) : error C2065: 'j'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(83) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(85) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(85) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(85) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(85) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(85) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(87) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(89) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(89) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(89) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(89) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(92) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(92) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(92) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(92) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(93) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(93) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(96) : error C2065: 'retards'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(96) : error C2065: 'Machines'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(96) : error C2065: 'id_machineDispo'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(96) : error C2109: un indice requiert un type tableau ou pointeur
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(96) : error C2065: 'k'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(97) : error C2065: 'retards'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(99) : error C2065: 'retards'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(100) : error C2065: 'retardsTotaux'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(100) : error C2065: 'retards'*: identificateur non déclaré
1>c:\users\documents\visual studio 2008\projects\code_c_edd\code_c_edd\main.c(104) : error C2065: 'retardsTotaux'*: identificateur non déclaré
1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Documents\Visual Studio 2008\Projects\code_c_EDD\code_c_EDD\Debug\BuildLog.htm"
1>code_c_EDD - 55 erreur(s), 0 avertissement(s)
========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
pascal- Bavard
- Messages : 20
Date d'inscription : 20/08/2009
Re: un programme m'echappe
C'est normal. Il n'est pas conforme à C90 :pascal a écrit:Salut,
Ce petit programme ne se compile pas de tout avec visual c++ alors qu'il s'exécute correctement avec codeblocks. Je n'ai pas pu corriger les bugs affichés.Pourriez vous m'aider?
- Code:
-------------- Build: Debug in hello ---------------
Compiling: main.c
Linking console executable: bin\Debug\hello.exe
C:\dev\hello\main.c: In function `main':
C:\dev\hello\main.c:52: warning: ISO C90 forbids mixed declarations and code
Output size is 21.31 KB
Process terminated with status 0 (0 minutes, 3 seconds)
0 errors, 1 warnings
- Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef int (*compfn) (const void *, const void *);
struct tache
{
int release_date;
int duree;
int due_date;
int id_tache;
};
typedef struct
{
int date_disponibilite;
}
machine;
struct tache job[] = {
{3, 0, 4, 1}, {5, 3, 5, 2}, {1, 4, 12, 3}, {2, 7, 10, 4}, {4, 8, 11, 5}
};
/*fonction tri par ordre croissant de sa date de fin*/
int compare (struct tache *elem1, struct tache *elem2)
{
if (elem1->due_date < elem2->due_date)
return -1;
else if (elem1->due_date > elem2->due_date)
return 1;
else
return 0;
}
void printarray (void)
{
int i;
for (i = 0; i < 5; i++)
printf (" %d ", job[i].id_tache);
}
int main (void)
{
float temps;
clock_t t1 = clock (), t2;
machine Machines[3];
int id_machineDispo;
int retardsTotaux = 0;
int retards, j, k;
qsort ((void *) &job, 5, sizeof (struct tache), (compfn) compare);
printf ("\n due_date tache par ordre croissant\n");
printarray ();
printf ("\n");
for (j = 0; j < 3; j++)
{
Machines[j].date_disponibilite = 0;
}
/* pour toute les taches */
for (k = 0; k < 5; k++)
{
id_machineDispo = 0;
/* trouver la machine disponible plus tot */
for (j = 0; j < 3; j++)
{
if (Machines[j].date_disponibilite <
Machines[id_machineDispo].date_disponibilite)
id_machineDispo = j;
}
/* calculer date fin tache sur machine */
if (k < 3)
Machines[id_machineDispo].date_disponibilite +=
job[k].duree + job[k].release_date;
if (k >= 3)
Machines[id_machineDispo].date_disponibilite += job[k].duree;
/* affichage affectation */
printf ("\n date disponibilite machine %d egale : %d ",
id_machineDispo, Machines[id_machineDispo].date_disponibilite);
printf ("\n placer tache %d sur machine %d", job[k].id_tache,
id_machineDispo);
printf ("\n");
/* calcul retard et retards totaux */
retards =
Machines[id_machineDispo].date_disponibilite - job[k].due_date;
printf ("\n retards : %d", retards);
printf ("\n");
if (retards > 0)
retardsTotaux += retards;
/* affichage retards totaux */
printf ("\n retards totaux : %d\n", retardsTotaux);
}
t2 = clock ();
temps = (float) (t2 - t1) / CLOCKS_PER_SEC;
/* temps exécution application */
printf ("temps = %f\n", temps);
return 0;
}
Re: un programme m'echappe
Merci pour votre réponse.
C'est formidable!
Par contre je n'ai pas vu la différence avec le code que j'ai posté dans mon premier message?
Avec mes remerciements
C'est formidable!
Par contre je n'ai pas vu la différence avec le code que j'ai posté dans mon premier message?
Avec mes remerciements
pascal- Bavard
- Messages : 20
Date d'inscription : 20/08/2009
Re: un programme m'echappe
L'erreur était ici :
2 solutions :
ajouter un bloc :
- Code:
int main(void)
{
float temps;
clock_t t1, t2;
t1 = clock();
machine Machines[3];
<...>
2 solutions :
ajouter un bloc :
- Code:
int main(void)
{
float temps;
clock_t t1, t2;
t1 = clock();
{
machine Machines[3];
<...>
}
- Code:
int main(void)
{
float temps;
clock_t t1 = clock(), t2;
machine Machines[3];
<...>
Dernière édition par -ed- le Sam 12 Sep 2009 - 14:31, édité 1 fois
Re: un programme m'echappe
Merci beaucoup , c'est parfait!
pascal- Bavard
- Messages : 20
Date d'inscription : 20/08/2009
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|