|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2012
Messaggi: 50
|
C: Utilizzo Top Down e compilato crash immediato.
Salve chiedo aiuto perchè non so trovare l'errore
compilato con dev-cpp su windows 7 mi da sempre problemi...sapreste dirmi il perchè? programma: # include <stdio.h> # include <stdlib.h> int media(); int positivi(); int insufficienze(); int limite(); int inizializzazione(); int menu(); int opz; int s[30]; int o[30]; int main() { printf("Programma di elaborazione voti informatica\n"); inizializzazione(); menu(); do {switch(opz) { case 1: media(); break; case 2: positivi(); break; case 3: insufficienze(); break; case 4: limite(); break; } } while (opz!=5); } int inizializzazione(int i) { for(i=0;i<30;i++) { do {printf("Inserire il voto scritto \ndell'alunno n' %d" , i+1); scanf("%d" , s[i]);} while(s[i]<1 || s[i]>10); do {printf("Inserire il voto orale \ndell'alunno n' %d" , i+1); scanf("%d" , o[i]);} while(o[i]<1 || o[i]>10); } return s[i]; return o[i]; } int media (int i,int cont, int media) { for(i=0;i<30;i++) { cont=0; cont=s[i]+o[i]; cont=(cont)/(2); printf("La media dei voti dell'alunno n' %d e' %d" , i+1, media); } } int positivi (int cont,int i) { cont=0; for(i=0;i<30;i++) { if (s[i]>6) if (o[i]>6) cont=cont+1; } printf("Il numero di voti positivi è %d" , cont); } int insufficienze (int i, int cont) { cont=0; for(i=0;i<30;i++) { if (s[i]<6) cont=cont+1; } printf("Nel test scritto ci sono state %d insufficienze ", cont); } int limite (int i,int cont,int limite) { cont=0; do {printf("Inserire il limite"); scanf("%d" , limite);} while(limite<1 || limite>10); for (i=0;i<30;i++) { if (o[i]>limite) cont=cont+1; } printf("Il numero di studenti che,\nnel compito orale hanno superato\nil limite di %d e' di %d" , limite ,cont); } int menu () { printf("Inserire l'operazione da fare"); scanf("%d" , opz); return opz; } |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
1) indenta il codice
2) cosa dovrebbe fare il tuo programma 3) descrivi il tuo errore |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2012
Messaggi: 50
|
deve utilizzare questi sotto programmi nella main e utilizzare le variabili globali dichiarate ma appena parte la main e inserisco il primo valore crasha
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
Scusa mi sembra che come hai utilizzato scanf sia sbagliato, devi usare il riferimento cioe' il puntatore alla variabile del vettore int corrispondente come descritto qui:
http://msdn.microsoft.com/en-us/libr...(v=VS.80).aspx cioè dovrebbe essere: se il vettore e' s[100] l'elemento i e' dato da s[i] quindi il riferimento a s[i] e' (s+i) quindi scanf("%d",(s+i)); o scanf("%d",&s[i]); poi return ti fa uscire immediatamente dalla funzione quindi è inutile return s[i]; return o[i]; perché il secondo return non è eseguito. quando chiami inizializzazione non passi nessun argomento a i quindi e' settato in modo errato e la funzione non dovrebbe uscire in modo normale. EDIT ho riletto il codice e invece ho trovato l'inizializzazione di opz scusami errore mio errori simili li ho trovati sulle altre funzioni. Poi correggetemi se sbaglio sono da anni a digiuno di C:
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb Ultima modifica di AllerITA : 27-04-2012 alle 21:57. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Mar 2012
Messaggi: 50
|
non riesco a capire quel che vuoi dire....s è il nome del vettore e i e l'indice del for che mi va a indicare anche l'indice del vettore
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
Forse ti conviene studiare i puntatori alla memoria altrimenti non ne vieni fuori.
Procurati un buon manuale del C o del C++ perché l'argomento da trattare è molto lungo e complesso, ed e' la base della programmazione del C. Se qualcun'altro e' in grado di spiegarlo in parole povere è ben accetto. Purtroppo il C e' alquanto complesso per un principiante, devi studiare parecchio prima di creare un sorgente privo di errori. E alle volte causa dimenticanze non basta. Comunque prenditi un buon manuale del C++ o del C e studialo bene. Guarda su Amazon o in una qualsiasi libreria accademica, io sono poco pratico nel consigliarti lascio ad altri più in gamba di me di farlo al mio posto.
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:27.



















