|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2007
Messaggi: 62
|
[C] Primo programma da solo
Ci ho provato. Ma ci sono degli errori anche in compilazione che non riesco a correggere. Sapreste aiutarmi per favore?
I file dati1.txt e dati2.txt contengono uno per riga dei numeri decimali. Scrivere il programma C che legge i numeri dai due file e produce un terzo file (dati3.txt) che contiene la somma dei due valori letti. I file dat1.txt e dati2.txt non hanno la stessa lunghezza. Quando uno dei due file è terminato sul file dati3.txt sono ricopiati i valori del file non ancora terminato. Esempio 3.60 -3.00 0.60 -78.904 7.0 -71.904 23.0 23.0 -17.3 -17.3 dati1.txt dati2.txt dati3.txt #include <stdio.h> #include <stdlib.h> double somma (double a, double b) { double s; s=a+b; return s; } int main () { FILE *fo, *fi, *fe; double a,b; fo=fopen("dati1.txt","r"); fi=fopen ("dati2.txt","r"); fe=fopen ("dati3.txt","w"); if (fo==NULL||fi==NULL) exit(-1); while (fscanf(fo,"%lf",&a)&&(fscanf(fi,"%lf",&b))!=EOF { ris=somma(a,b); fprintf(fe,"%f%",ris); } fclose(fo);fclose(fi);fclose(fe); return 0; } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Se non lo fai già impara a indentare il codice, diventa molto più leggibile, in ogni caso quando posti codice sul forum usa il tag CODE.
Codice:
#include <stdio.h> #include <stdlib.h> int main(){ FILE *fo, *fi, *fe; double a,b,ris; //Avevi dimenticato di dichiarare ris fo=fopen("dati1.txt","r"); fi=fopen ("dati2.txt","r"); fe=fopen ("dati3.txt","w"); if (fo==NULL||fi==NULL) exit(-1); while (fscanf(fo,"%lf",&a)&&(fscanf(fi,"%lf",&b))!=EOF){//Qui mancava una parentesi chiusa ris=a+b; //Ho tolto la funzione somma fprintf(fe,"%lf%\n",ris); a=0;b=0; //Quando uno dei 2 file termina resta memorizzato l'ultimo valore letto, //in questo modo mi assicuro che non resti memorizzato nulla } fclose(fo);fclose(fi);fclose(fe); return 0; } |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jun 2007
Messaggi: 62
|
Ok Perfetto Grazie mille.. Mi eserciterò meglio in questi giorni spero di arrivare all'esame preparato.. Alla prossima..
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:46.