PDA

View Full Version : [C++] Lettura variabili


Grein
26-02-2012, 02:29
Ciao ragazzi, qualcuno conosce un metodo per leggere in sequenza N elementi senza prima aver letto N?
Per rendermi più chiaro, se io voglio leggere N elementi faccio così no:
int i=0, intero;
cin>>N;
while (i<N){
cin>>intero;
i++
}


Avevo sentito che potrei usare un carattere di terminazione ma la mia idea era di inserire in sequenza gli elementi separati da spazi (Es. 1 6 3 6 78) e usare l'invio della tastiera come segnale di terminazione della sequenza, si può fare?

Tommo
26-02-2012, 02:50
Ovviamente si, ti basta usare "cin" su una stringa, che conterrà l'input "1 6 3 6 78".
A quel punto scrivi un piccolo parser per separare i numeri e convertirli in interi :read:

EDIT: no in realtà non funziona :doh:

cifa
26-02-2012, 11:14
Sono alle prime armi con il C++ quindi forse dico minchiate, ma il cin hon termina la lettura dopo lo spazio ? Il mio libro usa in questi casi getline per avere una stringa con tanto di spazi :\

Grein
26-02-2012, 19:35
Io sono arrivato a fare questo:



int number_sequenze(int count, int vett[]){

//rado al suolo il vettore
for (int i = 0; i < count; i += 1)
vett[i]=0;

string str;
int i=0;
bool inserisci = false;
bool stop = false;
int x;

//inizio ciclo
while (!stop)
{
//legge solo un carattere dalla tastiera e lo piazza in c
char c = cin.get();
//controlla se c è un numero
if(c >= '0' && c<= '9' ){
//incolla c nell'oggetto str della classe stringa
str.push_back(c);
inserisci = true;
}
//se il carattere è spazio o capo
else if (c == ' ' || c == '\n'){
//trasforma una stringa contenente numeri in numeri
x = atoi(str.c_str());
if (c == '\n')
stop = true;
else if (i<count)
if(inserisci){
inserisci = false;
vett[i] = x;
i++;
str.erase();
}
}
}
if(i<count){
vett[i] = x;
if(inserisci )
i++;
}
return i;
}


solo che non funzia con le variabili a virgola mobile, qualcuno ha qualche idea?

Tommo
26-02-2012, 22:06
Sono alle prime armi con il C++ quindi forse dico minchiate, ma il cin hon termina la lettura dopo lo spazio ? Il mio libro usa in questi casi getline per avere una stringa con tanto di spazi :\

Ma lo sai che hai ragione :D
Come non detto, non uso cin da secoli :asd: