Errore con lo "while"

Stato
Discussione chiusa ad ulteriori risposte.

Inverter

Utente Attivo
1,164
1
CPU
P4 2.40Ghz (Northwood)
Scheda Madre
ASUS P4B533
HDD
2xHDD (Snsung 60 GB - Maxtor 80 GB)
RAM
768MB DDR
GPU
Ati X1600 Series (512MB)
Monitor
Samsung SyncMaster 205BW 20"
OS
Windows XP
Ciao:)
Per non far diventare troppo pesante la teoria, ho iniziato a mettere in pratica le cose che ho letto.

Per questo ho iniziato a fare un piccolo programma che calcola le medie dei voti all'orale e allo scritto.

All'inizio facevo in modo che il programma chiedesse due voti per l'orale e due per lo scritto e ne calcolasse le medie, poi però, dato che funzionava così bene ma mi sembrava poco funzionale, ho voluto cambiare e provare qualcosa di più azzardato: in pratica voglio fare in modo che sia l'utente a decidere il numero di voti da inserire, sia all'orale che allo scritto, e per questo ho inserito lo "while" affiancato da un contatore e da una variabile che legge quanti voti vuole inserire l'utente.

Il mio intento è quello di far in modo che, quando il numero del contatore diventa uguale al numero di voti che vuole inserire l'utente, lo "while" si interrompe e passa alla istruzione successiva.

Il problema è che, appena inserisco il numero di volte per cui il ciclo si deve ripetere (cioè il numero di voti che voglio inserire), windows mi da un errore e si chiude il programma.:(

Non so quanto possiate averne capito dato che lo spiegato male.....
Comunque vi allego il file sorgente, tanto e' piccolo!:)

Vi ringrazio!
Ciao ciao!
 

doomer

Utente Attivo
38
0
l'errore sta nel while.
while (contatoreOrale == numVotiOrale) esegue il ciclo solo se contatoreOrale è = a numVotiOrale, ma siccome contatoreOrale all'inizio vale 0 il ciclo verrà eseguito solo se anche numVotiOrale vale 0...l'istruzione giusta è quindi
while (contatoreOrale < numVotiOrale) che continua a eseguire il ciclo finchè contatoreOrale è minore di numVotiOrale. idem per lo scritto.
 
Ultima modifica:

nekosan

Utente Attivo
308
0
il problema sta nel while come detto sopra , ma quello è solo il motivo per cui non ti chiede i voti, ma poi ci sono due errori gravi, uno di sintassi ed uno loggico/matematico.
Quello di sintassi è che tutte le assegnazioni che fai le fai con il doppi ugualo (==) ed è errato, perche == è una codizione logica.

ERRATA: contatoreScritto == contatoreScritto + 1;
CORRETTA: contatoreScritto += 1;

Il secondo errore è che fai delle divisioni per zero che generano l'ecezione che da l'errore di windows quindi la fine anomala del programma ;)

ERRATA: mediaOrale == totaleOrale / contatoreOrale;
perche: (mediaOrale == totaleOrale ) è uguale a 0 e anche contatoreOrale è = a 0, quinidl 'espressione fa 0/0 qundi da errore grave ad run time.

CORRETTA: mediaOrale = totaleOrale / contatoreOrale;
assicurandosi che i valori del divisore e del dividendo siano diversi da 0


Ciao
 

Inverter

Utente Attivo
1,164
1
CPU
P4 2.40Ghz (Northwood)
Scheda Madre
ASUS P4B533
HDD
2xHDD (Snsung 60 GB - Maxtor 80 GB)
RAM
768MB DDR
GPU
Ati X1600 Series (512MB)
Monitor
Samsung SyncMaster 205BW 20"
OS
Windows XP
wow!
ho corretto tutto e funziona! :birra:

Grazie mille!, scusate se non vi ho risposto ma ero in una casa al mare dove non c'è neanche il telefono... :cav:

Comunque vi ringrazio!
!!! :ok:


P.S.: Mod se volete potete chiudere!
 
  • Mi piace
Reazioni: REDCHAT
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili