|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
[C++] immissione dati
salve a tutti, avrei una domandina probabilmente abb stupida.... riguarda l'immissione di dati da parte dell'utente.
allora, se il mio programma sta aspettando un input di tipo int e l'utente inserisce un decimale o altro, il programma ovviamente sballa. come "forzare" l'immissione dei dati giusti? io ci ho pensato un po', e nella mia niubbiaggine ho pensato che gli operatori di cast potrebbero risolvere (in parte) il problema... ma mi chiedevo qual'era l'espediente usato in questi casi dai "pro"
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Con cosa stai facendo la lettura dei dati?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2003
Città: pisa
Messaggi: 141
|
prova se così funge:
Codice:
#include <iostream>
using namespace std;
int main(){
int i;
while(1) {
cout<<"Inserisci un numero: ";
cin>>i;
if(cin)
break;
cin.clear();
cin.ignore(1000,'\n');
};
cout<<"Hai inserito "<<i<<endl;
return 0;
}
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
Quote:
da console al momento
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Bye!
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
Quote:
in pratica tu finchè nn inserisci un dato accettabile rimane nel while. ad ogni iterazione, se non si è verificata la corretta immissione del dato, ignori quello che è stato immesso e ripeti il ciclo. non riesco a capire quel cin.ignore(1000,'\n'); però... mi è venuta in mente una cosa: un throw funzionerebbe? qualcosa tipo Codice:
try{
int x;
cin>>x;
if (!cin)
throw (x);
}
catch(double x) {
cout<<"il dato"<<x<<"non è accettabile"<<endl;
}
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
Quote:
ah sì, scusa, ovviamente è il cin>>i purtroppo nn ho familiarità con i comandi C, almeno è da molto tempo che nn li uso più... scanf %d ok, ma &variabile_intera?
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quella serve solo a dire a fscanf che deve inserire il valore numerico appena letto nella variabile puntata da "variabile_intera", dove "variabile_intera" è il nome della variabile di tipo int.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
ah ok, purtroppo come ho detto ho poca familiarità coi comandi c, ho sempre lavorato con l'iostream (o con fstream)... in pratica a scanf gli passi gli argomenti come fosse una funzione?
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
fscanf risolverebe il problema ? Non mi sembra...
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
ma il throw-catch funzionerebbe o come penso sballerebbe uguale perchè è legato al tipo int? (throw int -> catch int e non catch double)
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
if (!cin)
throw (x); } Una cosa del genere funziona comunque se ci sono stati problemi di lettura... |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
si ma la questione è, catch(x), deve/può essere catch(double x) o deve essere catch(int x)? perchè in quest'ultimo caso sballerebbe cmq
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Gli puoi far lanciare l'eccezione che ti pare...
Ad esempio: if (!cin) throw (string("Errore nell'immissione dei dati")); ... catch(string &e) { cerr << e << endl; } |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
|
aaaah avevo capito che throw(x) dovesse essere legato alla variabile che causava l'eccezione
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
...o forse sbaglio? Andavo a memoria, e fscanf non lo uso da parecchio (non interagisco molto conl'utente, io Anyway... perdonatemi, il fatto è che non sono molto esperto di C++.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Certo...ma passagli delle lettere
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Bye bye (e scusa, Dr_Kranz, ti stavo facendo sbagliare
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:00.



















