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

W jaki sposób odczytać dane z wejścia?

0 głosów
279 wizyt
pytanie zadane 16 listopada 2020 w C i C++ przez dnaiel Początkujący (400 p.)

Piszę projekt - gra karciana - na studia, w zadaniu mam taki przykład wejścia/wyjścia:

Wejście / Input
players number = 3
1 player hand cards: 4 green 4 green 4 green 1 blue 2 blue 4 blue 5 blue 7 blue 1 red 2 red
1 player deck cards: 5 red 7 red 1 violet 2 violet 4 violet 5 violet 7 violet
2 player hand cards: 4 green 4 green 4 green 1 blue 2 blue 5 blue 7 blue 1 red 2 red 4 red 5 red 7 red 1 violet 2 violet 4 violet
2 player deck cards: 7 violet
3 player hand cards: 4 green 4 green 1 blue 2 blue 4 blue 5 blue 7 blue 1 red 2 red 4 red 5 red 7 red 1 violet 2 violet 5 violet
3 player deck cards: 5 violet 7 violet

Wyjście / Output
1 player has 10 cards on hand
1 player has 7 cards in front of him
2 player has 15 cards on hand
2 player has 1 cards in front of him
3 player has 15 cards on hand
3 player has 2 cards in front of him

Pierwsza linijka wejscia to liczba graczy, druga linijka

1 player hand cards: 4 green 4 green 4 green 1 blue 2 blue 4 blue 5 blue 7 blue 1 red 2 red

oznacza:

karty w reku pierwszego gracza: (i tutaj wypisuje pary [wartość, kolor] karty - pierwsza karta ma kolor zielony wartosc 4, druga tak samo i trzecia też, czwarta karta ma wartość 1 kolor niebieski

 

I tu pojawia się problem: jaki będzie najlepszy sposób na wczytywanie danych i uzyskiwanie informacji z Wejścia takich jak w przykładzie - na przyklad liczby kart dla kazdego gracza? Czym się posłużyć? Może getline?

2 odpowiedzi

+2 głosów
odpowiedź 16 listopada 2020 przez tangarr Mędrzec (155,140 p.)
wybrane 16 listopada 2020 przez dnaiel
 
Najlepsza
Wczytujesz całą linię przy pomocy getline a potem dzielisz ją na poszczególne słowa (tokeny). W C masz do tego funkcję strtok a w C++ możesz użyć string streama.

Dla pierwszej linii sprawdzasz czy posiadasz tokeny "players" "number" "=" oraz liczbę graczy.
Potem w pętli dla każdego gracza wczytujesz dwie linie i sprawdzasz czy tokeny początkowe się zgadzają (<numer gracza> "player" "hand" (lub "deck")  "cards:"). A następnie wczytujesz po dwa tokeny (ilość kart i kolor) aż do końca linii. Sumujesz ilość kart i na koniec wypisujesz wynik.
+1 głos
odpowiedź 16 listopada 2020 przez j23 Mędrzec (195,220 p.)

Użyj std::getline i std::istringstream do parsowania linii.

Podobne pytania

0 głosów
1 odpowiedź 1,051 wizyt
+1 głos
1 odpowiedź 342 wizyt
pytanie zadane 5 grudnia 2016 w Java przez matir85 Bywalec (2,410 p.)
0 głosów
2 odpowiedzi 1,328 wizyt
pytanie zadane 24 stycznia 2020 w C i C++ przez Bfili Nowicjusz (120 p.)

93,720 zapytań

142,646 odpowiedzi

323,267 komentarzy

63,270 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.

...