| |||||
| Dernière réponse | |
|---|---|
| Sujet : prog en C a corriger pour VENDREDI !!! | |
| bjone | de toutes façon, ton truc tu l'attrappes sous n'importe quel compilo sous n'importe quel os, ça devrait marcher... |
| Aperçu |
|---|
| Vue Rapide de la discussion |
|---|
| bjone | de toutes façon, ton truc tu l'attrappes sous n'importe quel compilo sous n'importe quel os, ça devrait marcher... |
| lordankou | bah en fait je pouvais pas le tester car toutes les salles unix sont submergés avant de rendre les progs donc bah je demandais conseil à des gens qui s'y connaissent. En tout cas merci tout le monde. :) |
| Harkonnen | bonne question au fait..... parce que la, à part des syntax error, je vois pas ce qui cloche :lol: |
| bjone | au fait c quoi son problème à LordAnkou ? |
| bjone | hof c juste une chtite convention perso pour ne pas me faire baiser lors de tests de boucles, idem j'aime bien pour les ouvertures de fichiers
if( hdl=fopen(file,"r" ), !hdl ) perror(file),exit(1); je trouve ça très lisible tout en étant compact. fo po oublier que dans les if, while.... tu peux faire des ( op 1, op2, op3,..., condition de test) |
| Harkonnen |
|
| bjone | hors-sujet, mais moi j'écrirais plustôt:
while( entier_lu = fgetc(fichier_entre), !feof(fichier_entre) ) { } c encore plus propre. le EOF est déclenché lorsque l'on dépasse la fin d'un fichier, non pas quand on lit le dernier octet. (mais normallement l'autre écriture doit marcher) mais surtout faire un (entier_lu = fgetc(fichier_entre)) != EOF tu peut te faire baiser si l'entier_lu est un char et pas un int (et là le EOF ne rentre pas dans un char, et le compilo te dis rien et tu tournes en boucles à l'infini) |
| Harkonnen |
[jfdsdjhfuetppo]--Message édité par Harkonnen--[/jfdsdjhfuetppo] |
| lordankou | petit modification : #include <stdio.h> #include <stdlib.h> main() { FILE *fichier_entre ; FILE *fichier_sortie ; int entier_lu ; int entier_ecrit ; char chemin_entre[80] ; char chemin_sortie[80] ; int tpsVehicule = 0, tpsVehiculeBoucle = 0, tpsTotal = 0, tpsVehiculeTemp = 0, nbrErrone = 0, nbVehicule = 0 ; /* Saisie des noms des fichiers */ printf("\033[2J" ) ; printf("Entrer le nom du fichier d'entree : " ) ; gets(chemin_entre) ; if ((fichier_entre = fopen(chemin_entre, "r" )) != null) { printf("\nLe fichier n'existe pas" ); exit ; } while ((entier_lu = fgetc(fichier_entre)) != EOF || 0) { switch(entier_lu) { case 0 : { exit ; break ; } case 1 : { nbVehicule++ ; if tpsVehicule < VehiculeTemps { tpsVehicule = tpsVehiculeTemp ; tpsVehiculeTemp = 0; } break ; } case 2 : { tpsVehiculeTemp++ ; tpsTotal++ ; break ; } default : { printf("\nNombre errone !" ) ; nbrErrone++ ; break ; } } } fclose(fichier_entre) ; printf("\033[2J" ) ; printf("Temps Total : %d.", &tpsTotal) ; printf("\nNombre de vehicule passe : %d.", &nbVehicule) ; printf("\nTemps vehicule : %d.", &tpsVehicule) ; printf("\nNombre errone entre : %d.", &nbrErrone) ; printf("\n\nEntre le chemin de sortie : " ) ; gets(chemin_sortie) ; fichier_sortie=fopen(chemin_sortie, "w" ) ; fputc(tpsTotal, fichier_sortie) ; fputc(tpsVehicule, fichier_sortie) ; fputc(nbrErrone, fichier_sortie) ; fclose(fichier_sortie) ; printf("\nEnregistrement finit." ) ; } |
| HappyHarry | et sur le 0 tu sors pas |
| HappyHarry | ben deja
|
| robbystar | Tu doutes de rien toi :lol: |
| chrisbk | Ben voyons |
| lordankou | bon étant donné que ces put1 de salles unix sont totalement occupé je peux pas corriger mon prog. Donc bah j'ai besoin de vous !!! le but de ce prog ce de prendre des chiffres dans un fichier et de les traiter de la façon suivante :
pour un 0 on stop tout et on affiche les résultats avant d'enregistrer. pour un 1 : une voiture passe et on incrément le nombre de voiture. pour un 2 : c une unité de temps. bref un 2 peut correspondre à 1 sec par exemple. c le temps de passage entre deux véhicules. on gardera en mémoire le temps maximale séparant deux véhicule (c'est à dire le nombre maximale de 2 entre deux 1 ou entre un 1 et un 0). Bon bah voilà le prog now : #include <stdio.h> #include <stdlib.h> main() { FILE *fichier_entre ; FILE *fichier_sortie ; int entier_lu ; int entier_ecrit ; char chemin_entre[80] ; char chemin_sortie[80] ; int tpsVehicule = 0, tpsVehiculeBoucle = 0, tpsTotal = 0, tpsVehiculeTemp = 0, nbrErrone = 0, nbVehicule = 0 ; /* Saisie des noms des fichiers */ printf("\033[2J" ) ; printf("Entrer le nom du fichier d'entree : " ) ; gets(chemin_entre) ; if ((fichier_entre = fopen(chemin_entre, "r" )) != null) { printf("\nLe fichier n'existe pas" ); exit ; } while ((entier_lu = fgetc(fichier_entre)) != EOF || 0) { switch(entier_lu) { case 0 : break ; case 1 : { nbVehicule++ ; if tpsVehicule < VehiculeTemps { tpsVehicule = tpsVehiculeTemp ; tpsVehiculeTemp = 0; } break ; } case 2 : { tpsVehiculeTemp++ ; tpsTotal++ ; break ; } default : { printf("\nNombre errone !" ) ; nbrErrone++ ; break ; } } } fclose(fichier_entre) ; printf("\033[2J" ) ; printf("Temps Total : %d.", &tpsTotal) ; printf("\nNombre de vehicule passe : %d.", &nbVehicule) ; printf("\nTemps vehicule : %d.", &tpsVehicule) ; printf("\nNombre errone entre : %d.", &nbrErrone) ; printf("\n\nEntre le chemin de sortie : " ) ; gets(chemin_sortie) ; fichier_sortie=fopen(chemin_sortie, "w" ) ; fputc(tpsTotal, fichier_sortie) ; fputc(tpsVehicule, fichier_sortie) ; fputc(nbrErrone, fichier_sortie) ; fclose(fichier_sortie) ; printf("\nEnregistrement finit." ) ; } |




