|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 42
|
[c++] controllo input
Ciao a tutti
Codice:
#include <cstdlib>
#include <iostream>
using namespace std;
const int MAX_FIUMI = 300;
const int MAX_CITTA = 100;
int FiumiCitta [MAX_FIUMI] [MAX_CITTA] ;
void CaricaPerFiume (int FiumiCitta [MAX_FIUMI] [MAX_CITTA],
int n_fiumi, int n_citta)
{
for (int fiumi=0; fiumi<n_fiumi; fiumi++)
for (int citta=0; citta<n_citta; citta++)
{
do
{
cout <<endl <<" Inserire 1 se il fiume " <<fiumi +1<<
" bagna la citta " <<citta +1 << " ,0 se non la bagna ";
cin >>FiumiCitta [fiumi] [citta]; cout <<endl;
if (FiumiCitta[fiumi] [citta] != 0 && FiumiCitta[fiumi] [citta] != 1)
cout <<" Errore inserire 1 o 0" <<endl;
}
while (FiumiCitta[fiumi] [citta] != 0 && FiumiCitta[fiumi] [citta] != 1);
TNX a tutti Ultima modifica di carugo : 01-09-2014 alle 16:21. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2006
Messaggi: 3808
|
riporta un esempio completo, incluso il main e un esempio di input per la tua funzione .
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Tempo fa avevo pensato un po' a come fare, ma non ricordo la soluzione che avevo scelto. A pensarci un po' sbrigativamente, e contando che non tocco il C++ da un po', ho tirato fuori questo:
Codice:
#include <iostream>
#include <string>
using namespace std;
int read_int_from_console()
{
READ:
string in;
cin >> in;
try
{
return stoi(in); // stoi converte una string ad int; se non riesce, lancia eccezione
}
catch (exception ex)
{
cout << "string " << in << " couldn't be cast to int!!" << endl << endl;
goto READ;
}
}
int main()
{
cout << "Enter an integer number." << endl;
int n = read_int_from_console();
cout << "You entered: " << n << endl << endl;
return 0;
}
Problema: se scrivi 12asdas in console, ti viene restituito 12 anzichè dare errore. Soluzione: pensaci tu, questa risposta è solo un suggerimento sulla strada da percorrere |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Dec 2003
Messaggi: 70
|
Nel caso suggerirei questa variante che evita il 'GOTO'.
int read_int_from_console() { int ret; string in; bool loop = false; while(!loop) { cin >> in; try { ret = stoi(in); loop = true; } catch (exception ex) { cerr << "Error!" << endl; } } return ret;} |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 42
|
Grazie a tutti per le risposte questo è l 'intero codice
Codice:
#include <cstdlib>
#include <iostream>
using namespace std;
const int MAX_FIUMI = 300;
const int MAX_CITTA = 100;
int FiumiCitta [MAX_FIUMI] [MAX_CITTA] ;
void CaricaPerFiume (int FiumiCitta [MAX_FIUMI] [MAX_CITTA],
int n_fiumi, int n_citta)
{
for (int fiumi=0; fiumi<n_fiumi; fiumi++)
for (int citta=0; citta<n_citta; citta++)
{
do
{
cout <<endl <<" Inserire 1 se il fiume " <<fiumi +1<<
" bagna la citta " <<citta +1 << " ,0 se non la bagna ";
cin >>FiumiCitta [fiumi] [citta]; cout <<endl;
if (FiumiCitta[fiumi] [citta] != 0 && FiumiCitta[fiumi] [citta] != 1)
cout <<" Errore inserire 1 o 0" <<endl;
}
while (FiumiCitta[fiumi] [citta] != 0 && FiumiCitta[fiumi] [citta] != 1);
}
}
void StampaPerFiume (int FiumiCitta [MAX_FIUMI] [MAX_CITTA],
int n_fiumi, int n_citta)
{
for (int fiumi=0; fiumi<n_fiumi; fiumi++)
{
cout << endl << "Situazione per il fiume" <<fiumi +1 <<": ";
for (int citta=0; citta<n_citta; citta++)
cout <<FiumiCitta [fiumi] [citta];
}
}
void CaricaPerCitta (int FiumiCitta [MAX_FIUMI] [MAX_CITTA],
int n_fiumi, int n_citta)
{
for (int citta=0; citta<n_citta; citta++)
for (int fiumi=0; fiumi<n_fiumi; fiumi++)
{
cout <<endl <<" Inserire 1 se la citta " <<citta +1<<
" e' bagnata dal fiume " <<citta +1 << " ,0 se non e' bagnata ";
cin >>FiumiCitta [fiumi] [citta];
}
}
int main(int argc, char *argv[])
{
CaricaPerFiume (FiumiCitta,3,2);
//CaricaPerCitta (FiumiCitta,3,2);
//StampaPerFiume (FiumiCitta,3,2);
cout <<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Codice:
do
{
cout <<endl <<" Inserire 1 se il fiume " <<fiumi +1<<
" bagna la citta " <<citta +1 << " ,0 se non la bagna ";
cin >>FiumiCitta [fiumi] [citta]; cout <<endl;
if (FiumiCitta[fiumi] [citta] != 0 && FiumiCitta[fiumi] [citta] != 1)
cout <<" Errore inserire 1 o 0" <<endl;
}
while (FiumiCitta[fiumi] [citta] != 0 && FiumiCitta[fiumi] [citta] != 1);
TNX A TUTTI Ultima modifica di carugo : 02-09-2014 alle 10:45. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:14.



















