Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2649 connectés 

 


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...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


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 a écrit a écrit :

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)  




 
rien à ajouter  :jap:  :jap:

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

LordAnkou a écrit a écrit :

 
 while ((entier_lu = fgetc(fichier_entre)) != EOF || 0)  
  {
    switch(entier_lu)
      {
        case 0 : {
            exit ;
            break ;

             }  
         




 
EOF || 0 ???? moi j'écrirais plutot :
while ((entier_lu = fgetc(fichier_entre)) != EOF || (entier_lu = fgetc(fichier_entre)) != 0)
 
quant au break après l'exit, je doute de son utilité

 

[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  
 

Citation :

if ((fichier_entre = fopen(chemin_entre, "r" )) != null)
 {  
   printf("\nLe fichier n'existe pas" );  
   exit ;  
 }  


 
c un peu louche

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." ) ;
}

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)