View Full Version : [C++] Lettura variabili
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?
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:
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 :\
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?
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:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.