• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak podzielić int'a na tablice?

0 głosów
748 wizyt
pytanie zadane 21 października 2015 w C i C++ przez Melchior Obywatel (1,300 p.)
Pierwszy lepszy przykład ze spoja http://pl.spoj.com/problems/RNO_DOD/

Jak moge zamienić cin>>zmienna

na zmienna[0] zmienna[1] itd.. ?]

Slyszałem coś o wektorach ale nie mam pojęcia jak sie za to zabrać

3 odpowiedzi

+1 głos
odpowiedź 21 października 2015 przez niezalogowany
Ale po co ci w tym zadaniu tablica? Najlepiej jest je zrobić bez tablicy
komentarz 21 października 2015 przez Melchior Obywatel (1,300 p.)
To tylko przykład, chodzi mi ogólnie o rozdzielenie tych wartości pomiędzy spacjami.
komentarz 21 października 2015 przez niezalogowany

Nie musisz, robi to każdy znak biały, nie ma znaczenia czy wprowadzisz dane w ten sposób w konsoli:

a

b

c

d

Czy:

a b c d

Tak cin zawsze zakończy wczytywać zmienną w momencie napotkania białego znaku.

+1 głos
odpowiedź 21 października 2015 przez furas Maniak (53,800 p.)

Użyj osobnych nazw na te zmienne

int liczba
int tablica[10];

cin >> liczba

tablica[0] = liczba;

cin >> liczba

tablica[1] = liczba;

lub od razu w tablicy

int tablica[10];

cin >> tablica[0];

cin >> tablica[1];

W więszości wypadków (zamiast rozpisywać) wygodniej będzie to robić z użyciem `for` o ile wiesz ile będzie liczb do wczytania. Jeśli nie wiesz ile będzie liczb to wektor będzie lepszy bo nie musisz na początku podawać tej wielkości (tak jak w tablicy) i będzie on zwiększać pojemność wraz z dodawaniem elementu (co w tablicy nie jest możliwe bez przepisywania zapełnionej tablicy do nowej, większej tablicy). 

komentarz 21 października 2015 przez Melchior Obywatel (1,300 p.)

Ale mi chodzi o 

cin>>1 2 3 4 5 ;

cout<< 1+2+3+4+5

a nie o :
cin>>1 ;
wynik = 1+wynik ;
cin>>2 
wynik = 2+wynik ;

 

komentarz 21 października 2015 przez furas Maniak (53,800 p.)
Możesz jednym `cin` co najwyżej wczytać całą linię jako tekst a potem możesz

a. rodzielić linię na teksty zawierające tylko cyfry (split) i każdy z nich zamieniać na int.

b. zamienić tekst na isstream i czytać z niego za pomoca >> po jednym int aż dotrze do końca isstream.

Ale powyższe są potrzebne tylko gdy nie wiesz ile jest liczb w wierszu bo jak wiesz ile ich jest to robisz pętle `for` a w niej zwykłe `cin>>zmienna_typu_int` i samo pobiera po jednej liczbie.
0 głosów
odpowiedź 21 października 2015 przez Melchior Obywatel (1,300 p.)

Rzeczywiście dla tego przykładu ze SPOJa zadziałał kod:

​#include <iostream>

using namespace std;

int main()
{
int ile;
int ile_liczb;
cin >> ile ;


for(int i = 1 ; i<=ile; i++)
{
  long long liczba= 0 ;
   long long wynik = 0 ;
 cin>>ile_liczb ;
  for(int j= 1 ; j<=ile_liczb; j++)
  {
      cin>>liczba ;
      wynik+=liczba ;
  }
  cout<< wynik<<endl ;
}


return 0 ;
}
Dzięki za pomoc

Podobne pytania

+1 głos
2 odpowiedzi 1,200 wizyt
pytanie zadane 4 listopada 2021 w C i C++ przez topol_123 Nowicjusz (190 p.)
–1 głos
0 odpowiedzi 269 wizyt
pytanie zadane 25 września 2021 w C i C++ przez Clemontos Nowicjusz (160 p.)
+1 głos
1 odpowiedź 554 wizyt
pytanie zadane 19 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,630 p.)

93,800 zapytań

142,768 odpowiedzi

323,461 komentarzy

63,421 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...