Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Kontener Vector w pętli for

Ostatnio zmodyfikowano 2014-03-05 21:52
Autor Wiadomość
kaminki
Temat założony przez niniejszego użytkownika
[C++] Kontener Vector w pętli for
» 2014-03-05 20:06:47
Próbuje zrobić program, który będzie pobierał w jednej linii kilka liczb po przecinku i zapisywał je do vectora. Po wpisani liczb i kliknięciu ENTER. Na początku nie znamy ilości liczb jaka podamy.
C/C++
#include <iostream>
#include <vector>
#include <conio.h>

using namespace std;

vector < int > tab;
int liczba;
int znak = 0;
int main()
{
   
    do
    {
        if( znak == 13 )
        {
            break;
        }
        else
        {
            cin >> liczba;
            tab.push_back( liczba );
            znak = getche();
        }
    }
    while( znak != 13 );
   
    cout << tab.size();
   
}
P-105680
pekfos
» 2014-03-05 20:17:06
A w czym problem?
P-105685
kaminki
Temat założony przez niniejszego użytkownika
» 2014-03-05 20:56:54
Funkcja getch() w tej sytuacji nie działa prawidłowo. Próbuje różnych sposobów ale pewnie coś źle robię z pętlą.
P-105693
MrPoxipol
» 2014-03-05 21:08:42
A twoim zdaniem jak ma działać? Działa dobrze. Tak jak powinna.
P-105695
kaminki
Temat założony przez niniejszego użytkownika
» 2014-03-05 21:11:51
Wpisuje:
5 3 6  i klikam enter

na dole jest cout do pokazania ile elementow zawiera vector

i zwraca liczbe 1 niezależnie od ilosci podanych elementow a w tej sytuacji powinno byc 3
P-105698
MrPoxipol
» 2014-03-05 21:26:01
Każde wczytanie przy użyciu cin musisz zatwierdzić enterem.

/edit: Z tego co widzę chciałeś to zrobić tak (skompiluj z flagą -std=c++11 lub usuń blok z for):
C/C++
#include <iostream>
#include <vector>
#include <sstream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{
    vector < int > nums;
   
    string user_data;
    cout << "Podaj liste: " << endl;
    getline( cin, user_data ); // Pobieramy linie tekstu od uzytkownika
   
    string buffer;
    istringstream iss( user_data );
    while( getline( iss, buffer, ' ' ) )
         nums.push_back( atoi( buffer.c_str() ) );
   
    cout << "Sprasowane: " << endl;
   
    for( auto value: nums )
         cout << value << " ";
   
    return 0;
}
http://ideone.com/CassAK
P-105703
kaminki
Temat założony przez niniejszego użytkownika
» 2014-03-05 21:52:10
Dokładnie o to. Wielkie dzięki. Zamykam
P-105705
« 1 »
  Strona 1 z 1