• 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?

Object Storage Arubacloud
0 głosów
97 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 (154,860 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 (194,920 p.)

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

Podobne pytania

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

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...