[C] lecture fichiers / calcul / reecriture

lecture fichiers / calcul / reecriture [C] - C++ - Programmation

Marsh Posté le 06-04-2003 à 09:55:49    


- le programme utilise 2 fichiers:
il lit le fichier entree.dat qui contient 2 colonnes de nombres entiers
il crée un fichier de sortie dans le lequel il écrit la somme des nombres à chaque ligne
 
- le programme doit indiquer à la fin du fichier de sortie la moyenne des sommes calculées
 
- le fichier entree.dat ressemble à ceci:
---------------------entree.dat--------------------------
5 6
8 9
45 5
8 987
....
---------------------------------------------------------
 
- le fichier de sortie doit ressembler à ceci:
---------------------sortie.dat--------------------------
x+y=z
...
...
Moyenne des z=M
---------------------------------------------------------
 
Contraintes:
- le fichier entree.dat peut contenir autant de ligne qu'on veut.
- en C uniquement.
 
 
je dois faire ca pour mes cours, pouriez vous me mettre sur la piste, pour commencer, je debute, et j'aimerai qu'on m'aiguille.
merci

Reply

Marsh Posté le 06-04-2003 à 09:55:49   

Reply

Marsh Posté le 06-04-2003 à 10:02:14    

tu prends tes cours, tu lis, tu essayes, tu postes le code qui marche pas :O
 
mais bon, en vrac:
fopen/ fscanf/+ /fprintf/ fclose

Reply

Marsh Posté le 06-04-2003 à 10:06:26    

ok merci je vais me documenter sur ca

Reply

Marsh Posté le 06-04-2003 à 10:16:40    

poste un code qui compile, on corrigera. Du C iso si possible, merci.  :o

Reply

Marsh Posté le 07-04-2003 à 16:07:10    

#include <stdio.h>
main()
{
     int nombrex , nombrey     ;
     int nombrex1 , nombrey1   ;
     int nombrex2 , nombrey2   ;
     int nombrex3 , nombrey3   ;
     int nombrex4 , nombrey4   ;
     int nombrex5 , nombrey5   ;
 
     FILE * f;
     FILE * w;
     f=fopen("ok.txt", "r" )    ;
     w=fopen("resultat.txt", "w" );
     fscanf(f, "%d", &nombrex) ;
     fscanf(f, "%d", &nombrey) ;
     fscanf(f, "%d", &nombrex1);
     fscanf(f, "%d", &nombrey1);
     fscanf(f, "%d", &nombrex2);
     fscanf(f, "%d", &nombrey2);
     fscanf(f, "%d", &nombrex3);
     fscanf(f, "%d", &nombrey3);
     fscanf(f, "%d", &nombrex4);
     fscanf(f, "%d", &nombrey4);
     fscanf(f, "%d", &nombrex5);
     fscanf(f, "%d", &nombrey5);
 
fprintf(w,"%d + %d = %d \n",nombrex, nombrey, nombrex+nombrey)    ;
fprintf(w,"%d + %d = %d \n",nombrex1, nombrey1, nombrex1+nombrey1);
fprintf(w,"%d + %d = %d \n",nombrex2, nombrey2, nombrex2+nombrey2);
fprintf(w,"%d + %d = %d \n",nombrex3, nombrey3, nombrex3+nombrey3);
fprintf(w,"%d + %d = %d \n",nombrex4, nombrey4, nombrex4+nombrey4);
fprintf(w,"%d + %d = %d \n",nombrex5, nombrey5, nombrex5+nombrey5);
printf("tout à été ecrit dans le fichier resultat.txt.\n" );
}


 
 
c'est pas super mon affaire mais ca marche, je voudrai savoir comment faire des boucle, et aussi au niveau de mon EOF

Reply

Marsh Posté le 07-04-2003 à 17:19:01    

:??:

Reply

Marsh Posté le 07-04-2003 à 18:05:53    

:eek2:
 
pabô ! ;)
 
tu connais les tableaux ? Bon ... D'accord, ici, tu n'en as pas besoin si tu fais une boucle comme tu l'as justement suggéré ...
 
tu dois pouvoir faire quelque chose du genre

Code :
  1. int nb1, nb2;
  2. //tes fopen ...
  3. ...
  4. //
  5. while(fscanf(f, "%d %d", &nb1, &nb2)!=EOF) {
  6.   fprintf(w, "%d", nb1+nb2);
  7. }
  8. //tes fclose
  9. ...
  10. //


 
 
Edit : J'oubliais, comme toi, les fclose !!! pabien ! ;)


Message édité par theshockwave le 07-04-2003 à 18:07:24
Reply

Marsh Posté le 07-04-2003 à 18:13:57    

ok merci pour le coup pouce
 
et oui les fclose :)
c'est comme les maison close on les oublie trop souvent

Reply

Marsh Posté le 07-04-2003 à 18:58:39    

Par contre, si ton fichier comporte des erreurs, ca peut te faire un résultat un peu louche ...
 
exemple :
1 2
3 4
5
 
donnera
3
7
9    <---- :heink:
 
si je ne m'abuse ...
 
Tu peux détecter ce genre de pbs avec scanf (il te retourne le nombre d'éléments qu'il a réussi à affecter)

Reply

Marsh Posté le 07-04-2003 à 20:42:49    

oui oui j'ai trouvé mon bonneur, faut maintenant que je face le truc de moyenne

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed