Buona sera a tutti. Ho letto il regolamento della sezione e non mi pare fosse contrario alla valutazione di un programma, in caso non avessi capito correttamente chiedo scusa in anticipo.![]()
Ho fatto due programmi seguendo questi due testi (http://elite.polito.it/files/courses...0Turno%20A.pdf e http://areeweb.polito.it/didattica/f...0705_tCc2.docx)
Non sono riuscito a valutare da solo se funzionano perchè ho problemi a creare e aprire i file. Mi piacerebbe un vostro parere, se secondo voi sono corretti o ci sono errori. Ho l'esame la prossima settimana percui sto programmando come un pazzo, ma non vorrei fare errori e non accorgermene!![]()
Grazie in anticipo!
codice:#include <stdio.h> #include <stdlib.h> #define N 30 int main() { FILE* fp; int mappa[N][N]; char a_perdere; int i=0, j=0; int x1, x2, y1, y2; int max_altezza=0, min_altezza=0; int n_dati=0; int n_mare=0, n_terra=0, n_pianura=0, n_collina=0, n_montagna=0; float perc_mare, perc_pianura, perc_collina, perc_montagna; fp=fopen(mappa.dat, "r"); if(fp==NULL) { printf("error1"); return -1; } for(i=0; i<N; i++) { fscanf(fp,"%d", &mappa[i][0]); n_dati++; for(j=1; j<N; j++) { fscanf(fp, "%c%d", &a_perdere,&mappa[i][j]); n_dati++; } } if(n_dati!=(N*N)) { printf("errore nel formato del file"); return-4; } for(i=0; i<N; i++) { for(j=0; j<N; j++) { if(mappa[i][j]>3000||mappa[i][j]<3000) { printf("errore nel formato del file"); return-3; } } } printf("Inserire le coordinate x1, y1, x2, y2 della porzione di mappa da esaminare\n"); printf("x1 deve essere minore di x2 e y1 minore di y2"); scanf("%d%d%d%d", &x1,&y1,&x2,&y2); if(x1>x2||y1>y2) { printf("error2"); return -2; } min_altezza=mappa[x1][y1]; for(i=x1; i<x2; i++) { for(j=y1; j<y2; j++) { if(mappa[i][j]>max_altezza) max_altezza=mappa[i][j]; if(mappa[i][j]>0&&mappa[i][j]<min_altezza) min_altezza=mappa[i][j]; if(mappa[i][j]==0) n_mare++; else n_terra++; } } perc_mare=(n_mare/(n_mare+n_terra))*100; for(i=x1; i<x2; i++) { for(j=y1; j<y2; j++) { if(mappa[i][j]>0&&mappa[i][j]<200) n_pianura++; else n_terra++; } } perc_pianura=(n_pianura/(n_pianura+n_terra))*100; for(i=x1; i<x2; i++) { for(j=y1; j<y2; j++) { if(mappa[i][j]>=200&&mappa[i][j]<=600) n_collina++; else n_terra++; } } perc_collina=(n_collina/(n_collina+n_terra))*100; for(i=x1; i<x2; i++) { for(j=y1; j<y2; j++) { if(mappa[i][j]>600) n_montagna++; else n_terra++; } } perc_montagna=(n_montagna/(n_montagna+n_terra))*100; printf("Altitudine massima: %d\nAltitudine minima: %d\nMare: %.2f%%\nPianura: %.2f%%\nCollina: %.2f%%\nMontagna:%.2f%%", max_altezza,min_altezza,perc_mare,perc_pianura,perc_collina,perc_montagna); return 0; }codice:#include <stdio.h> #include <stdlib.h> #define filter "filter.txt" int main(int argc, char*argv[]) { typedef struct cad { char nome[36]; char cognome[36]; char R[50]; } a; typedef struct filt { int num_prova; char ris; } fil; FILE*fp; FILE*fp2; int k=0, i=0, j=0; a cadetto[k]; char* a_perdere; int n_filtri=0; fil filtro[n_filtri]; int risultato[k]; int falliti[i]; if(argc!=2) { printf("error1"); return-1; } fp=fopen(argv[1], "r"); if(fp==NULL) { printf("error2"); return-2; } while(!feof(fp)) { k++; fscanf(fp,"%s%s", &cadetto[k-1].nome,&cadetto[k-1].cognome); for(i=0; i<50; i++) fscanf(fp,"%c%c", &a_perdere,&cadetto[k-1].R[i]); } fp2=fopen(filter, "r"); if(fp2==NULL) { printf("error3"); return-3; } while(!feof(fp2)) { n_filtri++; fscanf(fp2,"%d%c", filtro[n_filtri-1].num_prova, filtro[n_filtri-1].ris); } fclose(fp2); for(i=0; i<n_filtri; i++) { for(j=0; j<k; j++) { if(cadetto[j].R[filtro[i].num_prova]==filtro[i].ris); risultato[j]++; } } j=0; for(i=0; i<k; i++) { if(risultato[i]=0) { j++; falliti[j-1]=i; } } printf("I cadetti che non hanno superato nessun test sono %d\n", j); printf("essi sono:\n"); for(k=0; k<j; k++) printf("cadetto %s %s\n",cadetto[falliti[k]].nome, cadetto[falliti[k]].cognome); }

Rispondi quotando