PDA

View Full Version : [C++] Errore digitazione e reinserimento dati.


DarkAnsem
06-04-2011, 01:49
Ragazzi ho questo programma:

#include <iostream>

using namespace std;

int main()
{
double next;
double highest;

cout << "Please enter the temperature values:\n";
if (cin >> next)
highest = next;
else
{
cout << "No data!\n";
return 1;
}

while (cin >> next)
{
if (next > highest)
highest = next;
}

cout << "The highest temperature is " << highest << "\n";

return 0;
}


chiede di inserire delle temperature e poi se si preme una lettera ti dice quella piu alta, però se all'inizio premi subito la lettera di dice no data! e si chiude il programma.

come posso modificare il programma per far si che se alla prima scelta mettendo la lettera invece di chiudersi il programma dopo il no data mi richieda di reinserire la temperatura di nuovo? so che si fa con i cicli while (penso) ma come? non ci riesco, ci giro in torno ma niente, vorrei che teoricamente all'inifinito se io alla prima richiesta scrivessi sempre lettere il programma all'infinito mi avverte che ho sbagliato e mi richieda di reinserire la temperatura.

grazie mille a chi mi saprà aiutare! :)

GByTe87
06-04-2011, 08:37
Edit: ho detto na cazzata... vado a prendere il caffè. :asd:

giangian2
06-04-2011, 09:12
Ciao,
come hai detto tu devi utilizzare un ciclo 'while'.
Devi inserire questo pezzo di codice in un ciclo 'while', appunto.

cout << "Please enter the temperature values:\n";
if (cin >> next)
highest = next;
else
{
cout << "No data!\n";
return 1;
}


quello che dovresti fare è ciclare su una variabile (per comodità potrebbe essere un booleano) finchè ha un valore, quando i dati inseriti sono validi cambi il valore della variabile così esci dal 'while' mentre se i dati non sono corretti stampi solamente l'errore (togli il return altrimenti il programma esce).

Spero di essere stato abbastanza chiaro.
ciao ciao

DarkAnsem
06-04-2011, 12:18
si infatti è proprio la descrizione mentale che mi ero fatto ma questo procedimento non riesco a tradurlo in codice, potresti aiutarmi?

grazie mille.

edit: ho provato cosi ma se digito il carattere mi va in loop invece di chiedermelo una votla sola perchè?

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
double next;
double highest;
bool more = true;

while (more)
{
cout << "Please enter the temperature values:\n";
if (cin >> next)
{
highest = next;
more = false;
}
else
{
cout << "No data!\n";
}
}
while (cin >> next)
{
if (next > highest)
highest = next;
}

cout << "The highest temperature is " << highest << "\n";
getchar();

return 0;
}

DarkAnsem
07-04-2011, 01:35
up