Programavimo pamokėlės

pamokelesm

Mokymų ciklas „Programavimo pamokėlės" skirtos visiems, kurie nori išmokti programuoti.

IT galvosūkiai

itgalvosukiai

Konkurso tikslas – skatinti moksleivius domėtis IT sprendžiant įvairiausius galvosūkius.

Informikas

informikasm

Konkurso tikslas – supažindinti moksleivius su menu informacinėse technologijose ir mūsų talismanu.

Dr. J. P. Kazicko konkursai

kkonkursai

Žemaitijos, Aukštaitijos, Suvalkijos ir Dzūkijos regionuose vykdomas IT konkursas.

       

Užduotis

Kitą savaitę vyks Paskalio gimtadienis, susirinks visi geriausi jo draugai, todėl šiuo metu jis laužo galvą, ką reikės veikti gimtadienio metu. Kiek pagalvojęs, jis sugalvojo kortų žaidimą, kurio taisyklės tokios:

  • Pradžioje visi žaidėjai turi po 100 taškų;
  • Ant stalo padedama kortų kaladė, o ant kiekvienos kortelės nupieštas vienas simbolis: „V“, „P“, „-“, „+“ arba „~“;
  • Kortelės „V“ ir „P“ reiškia, kad žaidėjų sąrašas išrikiuojamas atitinkamai pagal vardą arba pavardę abėcėlės tvarka;
  • Kortelė „-“ reiškia, kad neiškritusių žaidėjų sąraše tuo žaidimo metu esantis paskutinis (ne taškų atžvilgiu paskutinis, bet tiesiog esantis sąrašo apačioje) žaidėjas iškrenta iš žaidimo;
  • Kortelė „+“ reiškia, kad į žaidimą grįžta vėliausiai į iškritusių žaidėjų sąrašą įtrauktas žaidėjas su tiek taškų, kiek jų turėjo prieš iškrisdamas;
  • Kortelė „~“ reiškia, kad neiškritusių žaidėjų sąrašas išrikiuojamas tokia tvarka: pirmasis sąraše - daugiausia taškų turintis žaidėjas, antrasis - mažiausiai taškų turintis, tada iš likusių dalyvių daugiausiai taškų turintis, tada iš likusių dalyvių mažiausiai taškų turintis ir t.t.;
  • Po kiekvieno kortelės ištraukimo pirmiausia įvykdomas veiksmas, kurį nurodo kortelė, o po to žaidėjai gauna taškus: pirmasis sąraše – n *10, antrasis – (n-1) * 10, trečiasis – (n – 2) * 10 ir t.t., kur n – tuo žaidimo metu neiškritusių žaidėjų sąraše esantis žaidėjų skaičius;
  • Žaidimas baigiasi, kai kaladėje nebelieka kortelių, o laimėtoju skelbiamas tas žaidėjas, kuris turi daugiausia taškų.

Parašykite programą, kuri nustatytų Paskalio sukurto žaidimo laimėtoją.

Pradinių duomenų failo „Duomenys.txt“ pirmoje eilutėje pateiktas sveikasis skaičius n (3 < n < 20) – žaidėjų skaičius. Tolimesnėse n eilučių pateikta informacija apie kiekvieną žaidėją: vardas ir pavardė. Paskutinėje duomenų failo eilutėje pateikta simbolių eilutė – žaidimo eiga, t.y., kokia eilės tvarka buvo traukiamos kortelės žaidimo metu.

Rezultatų failo „Laimetojas.txt“ pirmoje eilutėje pateikta informacija apie žaidimo laimėtoją: vardas, pavardė ir surinktų taškų kiekis.

Duomenys.txt Laimetojas.txt Žaidimo eiga

6

Blezas Paskalis

Petras Klaustukas

Balys Sruoga

Sarpis Idomutis

Informikas Baltutis

Konstitucija Balsute

V-P

Balys Sruoga 220

Kortelė: V

------------------------------

Sąrašas prieš veiksmą:

Blezas Paskalis 100

Petras Klaustukas 100

Balys Sruoga 100

Sarpis Idomutis 100

Informikas Baltutis 100

Konstitucija Balsute 100

------------------------------

Sąrašas po veiksmo:

Balys Sruoga 100

Blezas Paskalis 100

Informikas Baltutis 100

Konstitucija Balsute 100

Petras Klaustukas 100

Sarpis Idomutis 100

------------------------------

Sąrašas po taškų pridėjimo:

Balys Sruoga 160

Blezas Paskalis 150

Informikas Baltutis 140

Konstitucija Balsute 130

Petras Klaustukas 120

Sarpis Idomutis 110

------------------------------

Kortelė: -

------------------------------

Sąrašas prieš veiksmą:

Balys Sruoga 160

Blezas Paskalis 150

Informikas Baltutis 140

Konstitucija Balsute 130

Petras Klaustukas 120

Sarpis Idomutis 110

------------------------------

Sąrašas po veiksmo:

Balys Sruoga 160

Blezas Paskalis 150

Informikas Baltutis 140

Konstitucija Balsute 130

Petras Klaustukas 120

------------------------------

Sąrašas po taškų pridėjimo:

Balys Sruoga 210

Blezas Paskalis 190

Informikas Baltutis 170

Konstitucija Balsute 150

Petras Klaustukas 130

------------------------------

Kortelė: P

------------------------------

Sąrašas prieš veiksmą:

Balys Sruoga 210

Blezas Paskalis 190

Informikas Baltutis 170

Konstitucija Balsute 150

Petras Klaustukas 130

------------------------------

Sąrašas po veiksmo:

Konstitucija Balsute 150

Informikas Baltutis 170

Petras Klaustukas 130

Blezas Paskalis 190

Balys Sruoga 210

------------------------------

Sąrašas po taškų pridėjimo:

Konstitucija Balsute 200

Informikas Baltutis 210

Petras Klaustukas 160

Blezas Paskalis 210

Balys Sruoga 220

------------------------------

Reikalavimai

  • Naudoti struktūros duomenų tipą žaidėjų informacijai saugoti: vardas, pavardė, taškų kiekis.
  • Duomenų skaitymo funkcija.
  • Rezultatų spausdinimo funkcija.
  • Funkcija, kuri seka žaidimo eigą ir kurioje atliekami skaičiavimai.
  • Funkcija, rikiuojanti sąrašą pagal vardą.
  • Funkcija, rikiuojanti sąrašą pagal pavardę.
  • Funkcija, rikiuojanti sąrašą pagal taškus: max, min, max, min... (kaip apibrėžta užduotyje).
  • Funkcija, kuri pašalina žaidėją iš sąrašo.
  • Funkcija, kuri prideda iškritusį žaidėją į sąrašą.
  • Taškų pridėjimo funkcija.
  • Funkcija, per savo vardą grąžinanti laimėtoją.

Pastabos:

  • Patarčiau pasidomėti ir naudoti vector konteinerį (kintančio ilgio masyvą), nes taip bus patogiau šalinti, pridėti į sąrašą žaidėjus.
  • Patarčiau iškritusius žaidėjus saugoti būtent vektoriuje, bet galima išsisukti ir naudojant masyvus.
  • D prielaidą, kad „-“ kortelių kaladėje visada bus mažiau už bendrą žaidėjų skaičių, t.y. neiškritusių žaidėjų sąraše visada bus likęs bent vienas žaidėjas.
  • Darome prielaidą, kad pradinis neiškritusių žaidėjų sąrašas yra toks, koks pateiktas duomenų faile.
  • Jei keli žaidėjai pabaigoje yra surinkę vienodą taškų skaičių, tai laimėtoju tampa tas, kuris sąraše yra aukščiau.
  • Gali būti, kad bus ištraukta kortelė „+“, bet nebus nė vieno iškritusio žaidėjo, tad reikalingas tikrinimas!

Papildoma informacija

  • Lygis: 3
  • Taškai: 100
Į viršų