PDA

Visualizza la versione completa : [C] Si blocca dopo il primo FOR (era: problema programma c)


SuperAlby
17-12-2008, 15:52
ciao sono di nuovo qui a chiedervi aiuto, devo da un .exe fare un progetto in modo che mi risulti un .exe uguale adesso vi posto l'exe e il progetto che sto facendo


#include <stdio.h>
#include <stdlib.h>

int main()
{
int risultato,bocciati;
int i,studenti,voto,n,y,m;
int x=1;
int t=0;
int v[13];



printf("PROGRAMMA PER CONOSCERE I RISULTATI DI ESAME C\n**********************************************\ n");
printf("\n*** Menu di scelta ***\na - \tHelp\nb - \tProgramma\n");
printf("\nScegli: a o b?\t");
scanf("%c",&i);
switch(i){
case 'a':
printf("\nProgramma v1.0\n");
break;
case 'b':
printf("\nQuesto programma permette di conoscere i risultati medi di un esame per un gruppo di studenti.Si desidera calcolare il voto medio di coloro che hanno superato l'esame conseguendo un voto maggiore o uguale a 60/100\n");
break;
default:
printf("\nERRORE\n");

}
printf("Inserire il numero di studenti che hanno sostenuto l'esame: ");
scanf("%d",&studenti);
for(n=0;n<studenti;n++){
printf("Inserisci il %d voto: ",x);
scanf("%d",&voto);
v[n]==voto;
x++;
}
for(y=0;y<studenti;y++){
while(v[y]!='\0') {
if(v[y]>=60){
m+=v[y];
++t;
}
}
}

risultato=(m/t);
printf("Il numero di promossi stato: %d con voto medio di: %d centesimi",t,risultato);
bocciati=(studenti-t);
printf("Il numero di bocciati : %d",bocciati);

system("PAUSE");
return 0;
}




il problema dato dal fatto che il programma si ferma dopo il primo ciclo for grazie a tutti

SuperAlby
17-12-2008, 15:58
come posso postare l'eseguibile?

MItaly
17-12-2008, 16:03
Un errore che vedo subito:


scanf("%d",&voto);
v[n]=voto;

e tra l'altro non ti serve nemmeno la variabile d'appoggio "voto", ti basta fare


scanf("%d",v+n);
.
Inoltre cosa sarebbe questo?

while(v[y]!='�')

LeleFT
17-12-2008, 16:05
Postare un eseguibile non ha senso: hai gi postato il sorgente, sempre su quello che si lavora (mai sull'eseguibile...).

A parte il fatto che non si capito molto cosa tu voglia ottenere (un eseguibile uguale ad un altro??? Mah...), se il programma si blocca sul secondo ciclo pu essere dovuto al fatto che l'array che stai cercando di controllare non contiene nessun carattere come quello della guardia del while...

PS: Occhio ai titoli.


Ciao. :ciauz:

MItaly
17-12-2008, 16:13
Ma soprattutto non ha senso effettuare il confronto di un carattere con un intero (il voto inserito).

SuperAlby
17-12-2008, 16:50
non so perch venuta cos '�' per sarebbe '\0'. cmq quello che devo fare avendo un eseguibile fare dal nulla un programma come quello che ho rifare il progetto insomma. il while l'ho messo cos mi prende tutti i voti superiori a 60 e finisce di cercare quando arriva alla fine dell'array

YuYevon
17-12-2008, 18:41
Non puoi gestire un array di interi (nel tuo caso "v") come se fosse un array di caratteri facendo il controllo v[y] != '\0'. Il predicato di uscita del while dovrebbe essere - nel tuo caso - y < studenti, visto che, a quanto pare (non ho provato il programma), inserisci un voto per ciascuno studente. Tra l'altro in quel while y non viene mai incrementata ma piuttosto viene incrementata quella strana variabile t, quindi direi che pi che normale che non ha mai fine il ciclo... mi sa che c' un bel po' da riscrivere.

Loading