Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* [C++] Controllo sul tipo
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
WeBBeR
Mortale devoto
Mortale devoto


Registrato: 23/04/07 23:25
Messaggi: 5

MessaggioInviato: 05 Mag 2007 20:05    Oggetto: * [C++] Controllo sul tipo Rispondi citando

Io ho un piccolo problema banale col C++, in pratica dopo aver effettuato la lettura di una variabile di tipo intero, voglio effettuare il controllo sul tipo, cioè voglio verificare che il valore inserito non sia un numero reale o una stringa.
es.
Codice:

void blabla () {
int x;
cout<<"Insersici x: ";
cin>>x;
...
...
...
return 0;
}


ovviamente è solo un codice di esempio stupido per chi non avesse capito cosa intendo, in questo caso la variabile x deve essere un numero intero, non un reale e neanche una stringa, come posso inserire il controllo sul tipo di dato inserito dall'utente?
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10178
Residenza: Tokelau

MessaggioInviato: 07 Mag 2007 11:24    Oggetto: Re: [C++] Controllo sul tipo Rispondi citando

WeBBeR ha scritto:
in pratica dopo aver effettuato la lettura di una variabile di tipo intero, voglio effettuare il controllo sul tipo, cioè voglio verificare che il valore inserito non sia un numero reale o una stringa.


guarda, non può proprio esserlo. Rolling Eyes

nel senso che se leggi l'input e lo metti in una variabile int, ciò che verrà caricato dentro non può essere altrimenti che un int.

forse vuoi caricare in una stringa e controllare se quello che hai letto è un numero intero? Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
WeBBeR
Mortale devoto
Mortale devoto


Registrato: 23/04/07 23:25
Messaggi: 5

MessaggioInviato: 07 Mag 2007 13:24    Oggetto: Rispondi citando

no, non hai capito, è ovvio che dentro la variabile di tipo intero entra solo un valore intero, ma essendo l'utente ad inserire il dato potrebbe, accidentalmente, inserire un valore reale o un carattere io voglio fare un controllo per verificare che appunto, non inserisca un valore diverso da un valore intero, spero di essermi spiegato.
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 10178
Residenza: Tokelau

MessaggioInviato: 07 Mag 2007 15:13    Oggetto: Rispondi citando

WeBBeR ha scritto:
essendo l'utente ad inserire il dato potrebbe, accidentalmente, inserire un valore reale o un carattere io voglio fare un controllo per verificare che appunto, non inserisca un valore diverso da un valore intero


leggi il testo in una stringa. poi converti il testo in un intero e dinuovo in una stringa. Se la nuova stringa è uguale alla vecchia allora ha digitato un numero valido. Altrimenti no Surprised

giusto? Rolling Eyes
Top
Profilo Invia messaggio privato HomePage
Crono
Semidio
Semidio


Registrato: 24/03/05 14:12
Messaggi: 224
Residenza: Trieste

MessaggioInviato: 08 Mag 2007 13:59    Oggetto: Re: [C++] Controllo sul tipo Rispondi

Cercando in giro ho trovato questo codice, in pratica ogni volta che si cerca di immettere nello stream cin qualcosa di diverso da un dato di tipo int tramite badbit (è un enumeratore definito da iostate che serve a controllare lo stato di uno stream dopo un operazione) viene generata un eccezzione e il ciclo while viene eseguito ancora una volta, cin.clear() serve a reinizializzare badbit mentre cin.ignore(...) e numeric_limits non so a cosa servano ma se fai una ricerca su google di sicuro trovi tutte le spiegazioni di cui hai bisogno

Codice:
#include<iostream>
#include<conio>
#include<limits>

using namespace std;

void main() {
 int n=0;
 clrscr();
 while(cout<<"Scrivi un numero di tipo int: " && !(cin>>n)) {
  cout<<"Questo non e' un numero, premi un tasto per continuare";
  cin.clear();
  cin.ignore(numeric_limits<streamsize>::max(), '\n');
  getch();
  clrscr();
 }

 cout<<"Hai scritto: "<<n;
 getch();
}
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi