|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: May 2011
Messaggi: 21
|
[C] Problema programma in c
Ho un problema con questo programma, praticamente quando vado ad inserire i nomi della materia e i voti, il programma non va avanti e mi dice solo: premere un tasto per continuare... Questo programma deve fare la media dei voti, vedere esito (promosso,rimandato,bocciato) e assegnare i punti di credito agli alunni delle classi 3,4 e 5. Codice:
#include<stdio.h> #include<stdlib.h> #define n 1 #define m 5 int j=0; int i=0; int a=0; int c=0; struct materie_voti{ char materie[10]; int voto; }mat_voti[m]; struct studente{ char nome[20]; char cognome[20]; int classe; float media; }alunno[n]; void carica() {for(i=0;i<n;i++) {printf("inserisci nome: "); scanf("%s",&alunno[i].nome); printf("inserisci cognome: "); scanf("%s",&alunno[i].cognome); printf("inserisci classe: "); scanf("%d",&alunno[i].classe); for(j=0;j<m;j++) {printf("inserisci nome materia: "); scanf("%s",&mat_voti[j].materie); printf("inserisci voto: "); scanf("%d",&mat_voti[j].voto); } } for(i=0;i<n;i++) { a=a+mat_voti[i].voto; c++; } alunno[i].media=a/c; } void pri_sec() {if((alunno[i].classe==1)||(alunno[i].classe==2)) {for(j=0;j<m;j++) {if(mat_voti[j].voto<=3) printf("Bocciato"); else{ if((mat_voti[j].voto==4)||(mat_voti[j].voto==5)) printf("Rimandato"); else{ printf("Promosso"); printf("La media dei voti e': %f",alunno[i].media); } } } } } void ter_qua() {if((alunno[i].classe==3)||(alunno[i].classe==4)) {for(j=0;j<m;j++) {if(mat_voti[j].voto<=3) printf("Bocciato"); else{ if((mat_voti[j].voto==4)||(mat_voti[j].voto==5)) printf("Rimandato"); else{ if(alunno[i].media==6) printf("Promosso con 3 punti di credito"); else{ if((alunno[i].media>6)&&(alunno[i].media<=6.4)) printf("Promosso con 4 punti di credito"); else{ if((alunno[i].media>=6.5)&&(alunno[i].media<=7)) printf("Promosso con 5 punti di credito"); else{ if((alunno[i].media>7)&&(alunno[i].media<=7.4)) printf("Promosso con 5 punti di credito"); else{ if((alunno[i].media>=7.5)&&(alunno[i].media<=8)) printf("Promosso con 6 punti di credito"); else{ if((alunno[i].media>8)&&(alunno[i].media<=8.4)) printf("Promosso con 6 punti di credito"); else{ if((alunno[i].media>=8.5)&&(alunno[i].media<=9)) printf("Promosso con 7 punti di credito"); else{ if((alunno[i].media>9)&&(alunno[i].media<=9.4)) printf("Promosso con 7 punti di credito"); else{ if((alunno[i].media>=9.5)&&(alunno[i].media<=10)) printf("Promosso con 8 punti di credito"); }}}}}}}}}}}}} void quinto() {if(alunno[i].classe==5) {for(j=0;j<m;j++) {if(mat_voti[j].voto<=5) printf("Bocciato"); else{ if(alunno[i].media==6) printf("Promosso con 4 punti di credito"); else{ if((alunno[i].media>6)&&(alunno[i].media<=6.4)) printf("Promosso con 5 punti di credito"); else{ if((alunno[i].media>=6.5)&&(alunno[i].media<=7)) printf("Promosso con 6 punti di credito"); else{ if((alunno[i].media>7)&&(alunno[i].media<=7.4)) printf("Promosso con 6 punti di credito"); else{ if((alunno[i].media>=7.5)&&(alunno[i].media<=8)) printf("Promosso con 7 punti di credito"); else{ if((alunno[i].media>8)&&(alunno[i].media<=8.4)) printf("Promosso con 7 punti di credito"); else{ if((alunno[i].media>=8.5)&&(alunno[i].media<=9)) printf("Promosso con 8 punti di credito"); else{ if((alunno[i].media>9)&&(alunno[i].media<=9.4)) printf("Promosso con 8 punti di credito"); else{ if((alunno[i].media>=9.5)&&(alunno[i].media<=10)) printf("Promosso con 9 punti di credito"); }}}}}}}}}}}} int main(){ carica(); pri_sec(); ter_qua(); quinto(); system("pause"); }
__________________
Motherboard: ASUS M5A97 EVO R2.0 CPU: AMD FX-8320 @ 3.5GHz RAM: 2x4 GB GPU: MSI Radeon R9 280X (3 GB) OS: Windows 10 Pro (64 Bit) |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Questo tipo di controlli
if((alunno[i].classe==1)||(alunno[i].classe==2)) nelle varie funzioni successive al caricamento, non hanno molto senso perché il valore di i non è corretto. |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: May 2011
Messaggi: 21
|
e quindi come posso risolvere il problema?
__________________
Motherboard: ASUS M5A97 EVO R2.0 CPU: AMD FX-8320 @ 3.5GHz RAM: 2x4 GB GPU: MSI Radeon R9 280X (3 GB) OS: Windows 10 Pro (64 Bit) |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Mi sembrava ovvio ...
Devi correggere il valore di i quando la usi nelle funzioni ... |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:47.