pobranie listy parametrów

0

Witam,

Mam pytanie dotyczące pobrania parametrów przez program.

Mianowicie chce odpalić program z takimi wartościami

2 1 2

lub

3 1 2 3

lub 4 54353 12312321 543 12

Generalnie ilość liczb jest zmienna. Wiem za to, że będą rozdzielone spacją. Kombinuje z cinem itp ale ta spacja wysypuje mi wszystko. w sensie nie mam błędów, ale nie pobiera mi prawidłowo parametrów.

Dodam, że 1 liczba determinuje ile będzie po niej licz. 2 oznacza, że będą 2 liczby dlatego jest 2 1 2 ale może też być 2 12312321 -12312321 (liczby ujemne również mogą być parametrem)

Mam opracowaną całą resztę programu tzn zasymulowałem działanie, gdy program dostaje konkretne parametry. Teraz muszę je dostarczyć, a raczej obsłużyć otrzymanie ich. W jaki sposób mogę przechwycić taki ciąg i obrobić ?

Bo dalej jest rozbijany po spacjach, ale to też mam obsłużone.

0
while(cin >> i)

?

0

a jak to przerwać ? bo tak to ciągle czeka aż mu coś wpiszę

dodatkowo czy obsłuży to jeszcze jeden element o którym zapomniałem wspomnieć (za co przepraszam)

Program może być wywołany z kilkoma zestawami parametrów, które mogą wyglądać tak

3
2 1 2
4 7 56 3456 -200
3 7 -10 234

Pierwsza linia determinuje liczbę zestawów danych, z kolei każda linia to osobny zestaw danych. To dam radę obsłużyć bo skoro mam wiadomą liczbę zestawów to wystarczy pętla, która wczyta linia po linii i rozbije, no ale jak wczytać całą linię.

0

Wydaje mi się, że funkcja getline() może okazać się moim przyjacielem

0

9
1 1
2 1 2
3 1 2 3
4 1 2 3 4
5 1 2 3 4 5
6 1 2 3 4 5 6
7 1 2 3 4 5 6 7
8 1 2 3 4 5 6 7 8
9 1 2 3 4 5 6 7 8 9

Chciałbym wczytać dane (z konsoli) jak najwydajniej

9 - tyle będzie zestawów
w każdej linii pierwsza liczba definiuje ile będzie liczb na prawo od niej

getline() generalnie spełnia to zadanie, ale zauważyłem, że zjada dużo zasobów, a zależy mi na ich zminimalizownaiu. Jakbyście to wczytali ?

0
unsigned Y;
cin>>Y; // ilość wierszy
for(unsigned y=0;y<Y;++y)
  {
   unsigned X;
   cin>>X; // ilość liczb
   // ewentualnie
   // int *tb=new int[X];
   for(unsigned x=0;x<X;++x)
      {
       int v;
       cin>>v;
       //tb[x]=v;
     }
   //tu masz wczytaną serie tb[0] .. tb[X-1]
   // obróbka serii
   //delete[] tb;
  }

Oczywiście przydało by się sprawdzenie czy tam są liczby.

0

czym jest zmienna m w drugiej pętli ? (warunek pętli)

0

dzięki za poprawienie. domyślałem się, że to to, ale wolałem się upewnić :)

jeszcze jedno pytanie mam. w jaki sposób można sprawdzić wydajność aplikacje pod kątem tego ile pamięci zajmuje ? Chce porównać dwa rozwiązania i zobaczyć co jest wydajniejsze. teoretycznie mogę to policzyć na piechotę, ale mam za dużo niewiadomych co do znajomości wszystkich aspektów systemu. Jest jakieś narzędzie do tego ?

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