18/09/10 16:32
gtsolid
ciao a tutti
qui ho il testo del problema: img541.imageshack.us/img541/7929/…
e qui la soluzione che ho scritto:
vorrei innanzitutto un parere e soprattutto un'alternativa... nel senso di una struttura in cui siano presenti struct.
grazie
qui ho il testo del problema: img541.imageshack.us/img541/7929/…
e qui la soluzione che ho scritto:
#include <stdio.h> #include <stdlib.h> #define N_AZIENDE 5 int main (int argc, char* argv[]) { FILE *fin, *fout; int cliente, azienda, operazione, q[N_AZIENDE], salva, totale = 0,cc; float qta; if(argc != 7) { fprintf (stderr,"Errore nel numero di argomenti passati al programma\n"); return (-1); } if((fin = fopen(argv[1],"r")) == NULL) { fprintf (stderr,"Errore in apertura file di ingresso\n"); return (-2); } /* il file di output lo apriamo solo se necessario */ cliente = atoi(argv[2]); azienda = atoi(argv[3]) - 1; operazione = argv[4][0]; qta = atof(argv[5]); if (argv[6][1] == 'S') { salva = 0; } else /* non sono previsti errori ....*/ { salva = 1; /* apriamo il file di output */ if((fout=fopen(argv[7],"w")) == NULL) fprintf (stderr,"Errore in apertura file di uscita\n"); } /* tutte e tre le operazioni richiedono di scandire il file */ while(fscanf(fin,"%d %d %d %d %d %d", &cc, &q[0], &q[1], &q[2], &q[3], &q[4]) == 6) { if(cc == cliente) { switch(operazione) { case 'A': q[azienda] += qta; break; case 'V': q[azienda] -= qta; break; case 'G': q[azienda] = q[azienda] * (1 + qta/100.0); break; } } if (salva) { fprintf(fout,"%d %d %d %d %d %d\n", cc, q[0], q[1], q[2], q[3], q[4]); } else { /* accumulo il totale dell’azienda, da stampare alla fine */ totale += q[azienda]; } } if (!salva) { printf("Numero totale di azione dell’azienda %d: %4d\n", azienda, totale); } fclose(fin); if (salva) { fclose(fout); } }
vorrei innanzitutto un parere e soprattutto un'alternativa... nel senso di una struttura in cui siano presenti struct.
grazie
aaa