Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con lettura file
Forum - C/C++ - Problema con lettura file

Avatar
daniele_ (Normal User)
Newbie


Messaggi: 7
Iscritto: 12/03/2009

Segnala al moderatore
Postato alle 20:07
Giovedì, 12/03/2009
Salve, avrei bisogno di leggere un file di testo riga per riga. Ogni riga è un intero. Avrei bisogno di fare la somma di ogni riga e di stamparla!

Vi sono molto grato!
Daniele

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:08
Giovedì, 12/03/2009
Beh ... e non hai nessuna idea? Nessun tentativo di codice?

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 1:40
Venerdì, 13/03/2009
prego cameriere vorrei il codice...


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 4:59
Venerdì, 13/03/2009
Devi utilizzare le funzioni fopen, fscanf e fclose per leggere da un file.

Dove esattamente ti blocchi nello sviluppo di questo codice?


Il mio blog: https://piero.dev
PM Quote
Avatar
daniele_ (Normal User)
Newbie


Messaggi: 7
Iscritto: 12/03/2009

Segnala al moderatore
Postato alle 15:20
Venerdì, 13/03/2009
ieri ero molto affrettato, altrimenti avrei postato la porzione di codice.
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. main()
  6. {
  7.       FILE *in;
  8.       int n;
  9.       int len;
  10.       int i=0;
  11.       int somma=0;
  12.       int temp;
  13.       in=fopen("input.txt","r");
  14.       while(!feof(in))
  15.       {
  16.                 fscanf(in, "%d\n", &n);
  17.                 printf("%d \n", n);
  18.                 len=strlen(n);
  19.                 printf("len=%d.\n",len);
  20.                 int v[len];
  21.                 for (int j=0; j<len; j++){
  22.                    temp=fgetc(in);
  23.                    printf("temp=%d.\n",temp);
  24.                     somma+=temp;
  25.                     }
  26.                 printf("somma=%d\n", somma);
  27.                 somma=0;
  28.                 i++;
  29.       }
  30.       fclose(in);
  31.       system("PAUSE");
  32. }



Ho però qualche problema perchè per calcolare la somma, tento di fare un vettore della lunghezza dell'intero e poi iserire carattere per carattere. E non so come fare...

Magari c'è una strada più veloce e semplice!!

Grazie

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 15:32
Venerdì, 13/03/2009
Ma cosa intendi con "somma di ogni riga"?

Se il tuo file contenesse

12
3456
789012

cosa dovresti fare in pratica?

PM Quote
Avatar
daniele_ (Normal User)
Newbie


Messaggi: 7
Iscritto: 12/03/2009

Segnala al moderatore
Postato alle 15:37
Venerdì, 13/03/2009
Tipo:
12
3456
789012

dovrebbe restituirmi:

(1+2)=3
(3+4+5+6)=18
(7+8+9+1+2)=27

Senza tutti i necessari passaggi...solo il risultato

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 15:48
Venerdì, 13/03/2009
Se consideri il concetto elementare di unità, decine, centinaia, ecc ... e di resto della divisione per 10, allora e' molto semplice

Codice sorgente - presumibilmente C/C++

  1. FILE *in;
  2.   int n, somma;
  3.  
  4.   in=fopen("input.txt","r");
  5.   while(!feof(in))
  6.   {
  7.     fscanf(in, "%d\n", &n);
  8.     printf("%d \n", n);
  9.  
  10.     somma = n % 10;
  11.     while(n>9)
  12.     {
  13.       n /= 10;
  14.       somma += n % 10;
  15.     }
  16.  
  17.     printf("somma=%d\n", somma);
  18.   }
  19.   fclose(in);


PM Quote
Avatar
daniele_ (Normal User)
Newbie


Messaggi: 7
Iscritto: 12/03/2009

Segnala al moderatore
Postato alle 16:00
Venerdì, 13/03/2009
caspita!! non ci avevo pensato...e non ci sarei mai arrivato...

Grazie davvero! :k:

PM Quote