Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Dopo più di un anno dal primo test drive ci siamo rimessi al volante della Renault 5 E-Tech Electric, questa volta utilizzandola come prima auto per circa due settimane. Scoprite con noi se il progetto convince ancora
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-04-2005, 16:07   #1
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
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" thx
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 18:52   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 18:53   #3
pela
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;
}
pela è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 19:10   #4
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
Quote:
Originariamente inviato da DanieleC88
Con cosa stai facendo la lettura dei dati?

da console al momento
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 19:14   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da Dr_Kranz
da console al momento
Si, vabbe', ma intendevo dire: "Cosa chiami per ricevere dati?" Forse "cin >> i", come suggeriva pela? Prova con "fscanf(stdio, "%d", &variabile_intera);". È molto da C, piuttosto che da C++, ma dovrebbe andare bene.

Bye!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 19:17   #6
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
Quote:
Originariamente inviato da pela
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;
}
allora, vediamo se riesco a capire

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;
}
funzionerebbe?
__________________
Transazioni ok: ciop71, j0hn, cala_l_asso, abc3d, joden, elessar, crivel, FLINKO, kingvisc, hiroshi976, raxxo, royal, vkbms, franx1508, robibo68, nonsenso
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 19:19   #7
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
Iscritto dal: Sep 2004
Città: Perdition
Messaggi: 504
Quote:
Originariamente inviato da DanieleC88
Si, vabbe', ma intendevo dire: "Cosa chiami per ricevere dati?" Forse "cin >> i", come suggeriva pela? Prova con "fscanf(stdio, "%d", &variabile_intera);". È molto da C, piuttosto che da C++, ma dovrebbe andare bene.

Bye!

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
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2005, 22:55   #8
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 07:14   #9
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
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
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 08:10   #10
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 08:40   #11
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
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
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 08:57   #12
cionci
Senior Member
 
L'Avatar di cionci
 
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...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 09:05   #13
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
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
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 11:42   #14
cionci
Senior Member
 
L'Avatar di cionci
 
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;
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 12:17   #15
Dr_Kranz
Senior Member
 
L'Avatar di Dr_Kranz
 
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
Dr_Kranz è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 16:17   #16
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci
fscanf risolverebe il problema ? Non mi sembra...
Potrebbe, credo: se il problema è un numero decimale, passando "%d" a fscanf lo forzerebbe a leggere un intero (verrebbe convertito, no?).
...o forse sbaglio? Andavo a memoria, e fscanf non lo uso da parecchio (non interagisco molto conl'utente, io )(anche perché l'unico utente dei miei programmi sono proprio 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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 16:31   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Certo...ma passagli delle lettere
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2005, 16:46   #18
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci
Certo...ma passagli delle lettere
E vabbe', mo vuoi troppo
Bye bye (e scusa, Dr_Kranz, ti stavo facendo sbagliare , ma non lo sapevo)!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati? Renault 5 elettrica al giudizio definitivo: solo...
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
eufyCam 2C: a 166,99€ 3 unità per...
Sony prepara l'addio al dischi, ma oggi ...
Disney Plus ha disabilitato l'accesso ai...
Smartphone, il costo dei componenti cres...
Iliad cresce ancora, TIM è in netto calo...
SpaceX fa marcia indietro: cosa succeder...
Super: su Amazon appare un PC portatile ...
Le marmotte finiscono su OnlyFans, ma il...
Xbox Cloud Gaming si espande e arriva su...
Il riconoscimento facciale con IA per co...
MacBook Ultra: il nuovo design arriver&a...
Gli utenti passano più tempo su Instagra...
L'AI sta facendo guadagnare miliardi anc...
L'Odissea di Nolan rilancia Assassin's C...
Russia vieta il mining di criptovalute a...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:58.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v