wczytywanie nieokreślonej liczby zmiennych

0

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.

0

wczytuj dane do listy

0

jakiej listy?

0
list<int> lista;
while(cin>>x)
{
  lista.push_back(x);
}

http://www.cplusplus.com/reference/stl/list/

0

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

0
#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;
  }
}
0

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') {}
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1