Ottimizzazione semplice programma

di il
1 risposte

Ottimizzazione semplice programma

Buonasera sto lavorando ad un programma per scuola che dato un file un numero per riga mi da in uotput la somma di quei numeri.
es: 1
4
5
l'output deve essere 10.
L' ho fatto in questo modo e funziona però, dato che sono agli inizi con l'interazione con i file (stdio), mi chiedevo se ci fosse un modo più ottimizzato per farlo oppure se sto usando male qualcosa, vi allego il codice.
#include <iostream>
#include <stdio.h>
using namespace std;

int main(int argc, char** argv) {

   FILE *f;
 
   int s[20];
   int i=0;
   int a=0;
   f=fopen("ciao.txt","r");

   
   if (f==NULL){
   	printf("il file non e stato aperto correttamente");
    return 1;
   } 

    printf("Contenuto del file: \n");
    
	while(!feof(f)){
	
	fscanf(f,"%d",&s[i]);
   
    if(!feof(f))
    printf("\n %d",s[i]);
    i++;
    
}

for(int x=0;x<i-1;x++){
	a+=s[x];
}   

printf("\n \n La somma dei numeri corrisponde a: %d",a);
  
   fclose(f);

	return 0;
}

1 Risposte

  • Re: Ottimizzazione semplice programma

    Non hai bisogno di un vettore per fare questo esercizio: ti bastano semplicemente due variabili, una per leggere i numeri dal file e l'altra per salvare la somma di volta in volta. Qualcosa del genere dovrebbe funzionare, tieni presente che devi passare il file come argomento da riga di comando, in alternativa puoi adattarlo per aprire il file come fai nel tuo programma e cancellare l'if relativo ad argc:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main(int argc, char *argv[])
    {
        FILE *f;
        int c, total_sum;
    
        if(2 != argc)
        {
            fprintf(stderr, "Utilizzo: %s filename\n", argv[0]);
            exit(EXIT_FAILURE);
        }
        
        f = fopen(argv[1], "r");
    
        if(NULL == f)
        {
            perror("Error, can't open file ");
            exit(EXIT_FAILURE);
        }
    
        total_sum = 0;
    
        while(fscanf(f, "%d", &c) != EOF)
        {
            total_sum += c;
        }
        
        fclose(f);
        printf("La somma e' : %d\n", total_sum);
    
    
        return EXIT_SUCCESS;
    }
    
    Edit: avevo dimenticato alcune cose nel codice
Devi accedere o registrarti per scrivere nel forum
1 risposte