Bonjour j'ai un probleme dans l'utilisation du langage C.
En effet, je dois comparer deux horaires et verifier qu'il n'y a pas plus de 30 minutes d'ecart entre les deux.
Comment fait on?
Merci ![]()
donne nous ton code source et sur quoi tu bloque exactement dans ce code pour qu'on puisse t'aider parce qu'on va pas résoudre ton problème à ta place puisqu'avec une correction prête, tu ne pourras jamais t'améliorer
Je veux bien mais mon code source est hyper long lol
// projprojbis.cpp : définit le point d'entrée pour l'application console.
//
typedef char CH15[16];
struct LIBELLE
{
CH15 lib;
int occ;
};
struct AFFICHAGE
{
char quai;
int num;
CH15 lib;
int heure;
};
void main ()
{
AFFICHAGE Taffich[8];//Tableau d'affichage des trains
LIBELLE Tlib[12]; //Tableau stockant les differents libellés saisis ainsi que le nombre de fois ou ils sont apparus au cours des mises a jour.
int i,
c=0, //compteur mesurant le nombre de fois qu'un libellé donné est affiché
j,
nbq=0,
numlu,
nbTaffich,
heuremod,
nb;
char lettre;
CH15 liblu;
printf (" SAISIE DES DONNEES DU JOUR \n\n");
printf ("Quel est le nombre de quais utilisables aujourd'hui?");
scanf ("%d",&nb);
if (nb>=1 && nb<=6)
{
printf ("Quel est le nombre de provenances?");
scanf ("%d",&nb);
if (nb>=1 && nb<=12)
{
j=0;
printf("Veuillez entrer le libelle de chaque provenance\n");
do
{
gets (liblu);
for(i=0;i<j && strcmp(Tlib[i].lib,liblu)!=0;i=i+1);
if (i==j)
{
for (i=j-1; i>=0 && strcmp(liblu,Tlib[i].lib)<0; i=i-1)
{
Tlib[i+1]=Tlib[i];
i=i-1;
}
i=i+1;
strcpy (Tlib[i].lib,liblu);
Tlib[i].occ=0;
}
else
printf("ce libellé est déja connu");
j=j+1;
}
while (j<nb);
switch (lettre)
{
case 'R':
{
nbq=0;
printf ("entrez le numero du train");
scanf ("%d",& numlu);
for (i=0;i<nbTaffich && numlu!=Taffich[i].num;i=i+1);
if (i==nbTaffich)
{
printf ("Ce train n'est pas annoncé");
break;
}
for (j=0; j<nbTaffich; j=j+1)
{
if(Taffich[i].quai==Taffich[j].quai && j!=i)
{
Taffich[j]=T3[nbq];
nbq=nbq+1;
}
}
for (j=0; j<nbq && 30 min entre Taffich[i].heure et T3[j];j=j+1);
if (j<nbq)
Taffich[i].quai=NULL;
Taffich[i].heure = heuremod;
for (j=nbTaffich-1;j>=0;j=j-1)
{
if(Taffich[i].heure>Taffich[j].heure)
{
T2[0]=Taffich[i];
while (j>i)
{
Taffich[i]=Taffich[i+1];
i=i+1;
}
Taffich[i]=T2[0];
j=0;
}
else
{
if(Taffich[i].heure==Taffich[j].heure)
{
if (Taffich[j].quai<=Taffich[i].quai)
{
T2[0]=Taffich[i];
while(i<j)
{
Taffich[i]=Taffich[i+1];
i=i+1;
}
Taffich[j]=T2[0];
j=0;
}
}
}
}
}
case 'V':
{
printf ("Veuillez entrer le libellé de la provenance");
gets (liblu);
for(i=0;i<nb && strcmp(liblu,Tlib[i].lib)!=0;i=i+1);
if (i<nb)
{
printf("%-15s",liblu);
for (j=0;j<nblib;j=j+1)
{
if(strcmp(Tlib[j].lib,liblu)=0)
c=c+1;
}
printf("Il y a %d trains actuellement affichés qui concernent cette provenance",c);
printf("Il y a eu %d trains annoncés concernant cette provenance",Tlib[i].occ);
}
else
printf ("provenance non connue");
break;
}
case 'P':
{
for(i=0; i<nblib; i=i+1)
{
for (j=0,c=0;j<nbTaffich;j=j+1)
{
if(strcmp(Tlib[i].lib,Taffich[i].lib)=0);
c=c+1;
}
printf("Le libellé %15s est actuellement affiché %d fois et à été annoncé en tout %d fois",Tlib[i].lib, c, Tlib[i].occ);
}
break;
}
}
}//fin switch
else
printf ("ce nombre est incorrect");
}
else
printf ("Ce nombre est incorrect");
} //Fin du programme
Je bloqu ea cette ligne la
for (j=0; j<nbq && 30 min entre Taffich[i].heure et T3[j];j=j+1);
Faites ctrl+F pour trouver la ligne ;)
plus lisible
http://pastebin.com/m678b918a
for (j=0; j<nbq && Taffich[i].heure<= T3[j]+30 ;j=j+1); ![]()
Oui merci apollo il est fort possible que cette solution soit juste ![]()
je suppose que le code que tu nous a donné n'est pas ton code vu qu'appollo n'a fait que recopier ton code dans "pastebin" pourqu'il soit plus lisible et tu ne l'a pas remarqué
autre chose, comment tu dis que tu bloque dans la boucle que t'as cité tant dit que ton programme va se bloquer en première ligne ![]()
à toi de vérfier comment on déclare les include
Bon ton soit disant code renfermait plus de 120 erreurs de compilation, après les avoir toutes corrigés je constate qu'il ne fait rien à l'execution et qu'il se termine après la troisième étape d'où la présence des erreurs dans ton code source lui même(ton calcul, tes boucles....)
et après les avoir corrigé et avoir eu le bon résultat je suis devenu sûr d'une seule chose===> ce code n'est pas le tien et tu ne pourras pas me convaincre du contraire mais aussi celui qui l'a fait ne connait rien à la programmation
Coordinalement
owned
ba c'est pas bien dur :
tu demandes à l'utilisateur un horaire :
heure1
minutes1
tu demandes à l'utilisateur un second horaire :
heure2
minutes2
tu convertis heure1 et minutes1 en temps1 (nombre total de minutes pour le premier horaire)
tu convertis heure2 et minutes2 en temps2 (nombre total de minutes pour le second horaire)
après une condition :
si temps2-temps1>30 ou temps1-temps2>30
afficher plus de 30 minutes d'ecart
sinon
afficher moins de 30 minutes d'ecart
Voilà je t'ai donné un algo vite fait, maintenant à toi de te débrouiller, et tout seul cette fois ![]()
LegendSnake, tu a bien du te rendre compte qu'il te manquait des include pour compiler ça. Ils sont probablement dans stdafx.h qui est un en tête un peu particulier pour visual C++ (un en tête qui n'est pas recompilé à chaque fois, donc parfait pour des grosses bibliothèques).
Si tu as viré ça, pas étonnant qu'il ne se passe rien après. Mais tu ne peut pas dire que ça se bloque sur la première ligne alors que tu n'a pas ce qu'il faut pour le compiler.
je parlais des "" qu'il a mis à la place de <> et non de stdafx.h ![]()
Et soit rassuré je ne l'ai pas enlevé.
"je parlais des "" qu'il a mis à la place de <> et non de stdafx.h
"
Tu manques un peu de pratique en C LegendSnake, tu peux inclure un header systeme avec la notation guillemet. On ne le fait pas d'habitude, cependant ca devrait marcher. (section 4.11.1 du K&R norme ansi deuxieme edition)
lorsque l'on met un header avec des guillemets, il est recherché d'abord dans le dossier local, puis dans les dossiers d'en tête standard, et c'est le contraire avec des <>.
Eh oh LegendSnake, je te prierais de te calmer et d'arreter tes accusations de merde. Je suis venu pour demander de l'aide, pas pour subir un procès!
* appolo_13 Voir le profil de appolo_13
* Posté le 02 novembre 2008 à 19:01:07 Avertir un modérateur
* plus lisible
http://pastebin.com/m678b918a
for (j=0; j<nbq && Taffich[i].heure<= T3[j]+30 ;j=j+1); ![]()
* Lien permanent
* kuwabara Voir le profil de kuwabara
* Posté le 02 novembre 2008 à 19:37:08 Avertir un modérateur
* Oui merci apollo il est fort possible que cette solution soit juste
Ca va t'as compris la
??
Tu peux relire cette citation autant que tu veux sinon, tu te rendras vite compte que ta réponse a ce post fut totalement déplacée et débile de surcroit.
Et puis sache que ce BOUT de programme est une partie d'un projet, que je n'ai pas encore achevé (j'ai tout écrit dans le désordre...) et donc pas étonnant qu'il ne marches pas pour l'instant. Appolo m'a demandé le code, je l'ait mis c'est tout (Si je ne l'avais pas posté a mon premier message, c'est que je me doutais qu'il ne servait a rien mais bon... vous auriez refusé de m'aider autrement_cf premiere reponse_).
Pff sincèrement si c'est pour faire des remarques déplacées sans meme lire le contenu du topic ne postez pas car les polueurs, c'est vous, et ce quoi que vous en pensiez.
Au passage je te remercie quand même sur les include ![]()
Je suis effectivement sous visual C++ ![]()
====> je l'avoue puisque ça ne fait pas très longtemps que je me suis mis sérieusement sur le C et je croyais qu'on devait déclarer nos fichier headers dans des fichiers .h pour faire leur appel avec #include""