Na pewnej stronie znalazłem taki sposób:
while(cin>>x)
{
cout<<x<<endl;
}
Ale przy każdym kolejnym obrocie pętli dane będą nadpisywane. Chcę, żeby program pytał o zmienne do momentu nie wpisania niczego i wciśnięciu entera.
Na pewnej stronie znalazłem taki sposób:
while(cin>>x)
{
cout<<x<<endl;
}
Ale przy każdym kolejnym obrocie pętli dane będą nadpisywane. Chcę, żeby program pytał o zmienne do momentu nie wpisania niczego i wciśnięciu entera.
wczytuj dane do listy
jakiej listy?
list<int> lista;
while(cin>>x)
{
lista.push_back(x);
}
jeżeli nie chcesz, żeby dane się nadpisywały, to musisz je gdzieś gromadzić, a do gromadzenie nie znanej z góry liczby danych nadaje się struktura danych o nazwie lista
chyba, że nie o to pytasz, to sprecyzuj pytanie
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> lista; // czy string czy co tam ma być
int x; // j.w.
cout<<"wczytywanie:"<<endl;
while(cin>>x)
{
lista.push_back(x);
}
cout<<"wypisywanie:"<<endl;
for (size_t i=0;i<lista.size();i++)
{
cout<<lista[i]<<endl;
}
}
Wczytywanie do nie wpisania niczego jest nieco skomplikowane w C++.
Musiałbyś stworzyć funkcję na wzór funkcji ws (cin>>ws)
Która by w odróżnieniu od ws przy wczytaniu entera zwracała błąd.
wtedy:
while(cin>>wsext>>x) cout<<x<<endl;
zadziała tak jak chcesz.
Jednak w C++ o wiele łatwiej wczytywać liczby do podania jakiegoś znaku (lub ciągu znaków trochę bardziej skomplikowane), np do znaku '!'
while(true)
{
if(cin>>x) cout<<x<<endl;
else
{
cin.clear();
if(cin.get()=='!') break;
cout<<"Blad wprowadzenia"<<endl;
}
cin.sync(); // jeżeli nie zadziała to: while(cin.get()!='\n') {}
}