|
|||||||
|
|
|
![]() |
|
|
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: 17:04.



















