Įvairūs uždaviniai (masyvai, struktūros)

Skaičių kvadratai.

Duota n natūraliųjų skaičių seka: a1, a2, a3, ..., an.

Suraskite, keli tos sekos nariai yra lyginio skaičiaus kvadratai.

Duomenys yra faile "Pirmas.dat".

Pirmoje eilutėje skaičius n (1 <= n <= 20000).

Kitose eilutėse surašyti skaičiai.

Rezultatus rašyti į failą "Pirmas.rez". Pirmoje eilutėje parašyti du žodžius: "Surasti skaičiai:". Kitose eilutėse surašyti visus skaičius, kurie yra lyginio skaičiaus kvadratai. Paskutinėje eilutėje turi būti tik du žodžiai "Iš viso:" ir surastų skaičių kiekis. Jei skaičių, tenkinančių sąlygą nėra, tai rezultatų byloje įrašyti vieną žodį: ‚Nėra‘.

Biliardas

Sakykime, duotas stačiakampis, kurio kraštinių ilgiai išreikšti natūraliaisiais skaičiais a, b. Iš vienos stačiakampio viršūnės brėžiama linija, kuri su stačiakampio kraštinėmis sudaro 45 laipsnių kampus. Pasiekusi stačiakampio kraštinę, linija lūžta 90 laipsnių kampu, nekirsdama stačiakampio kraštinės. Pasiekusi kitą kraštinę, ji vėl lūžta 90 laipsnių kampu, tol kol pasiekia kurią nors stačiakampio viršūnę. Gautoji laužtė panaši į biliardo kamuolio trajektoriją stačiakampėje lentoje.

Parašykite programą, kuri nustatytų, iš kelių atkarpų sudaryta laužtė.

Kamuoliai.

Yra daug įvairaus dydžio stačiakampio gretasienio formos dėžių. Jos naudojamos kamuoliams supakuoti dedant į vieną dėžę po vieną kamuolį (kamuolys neturi išsikišti iš dėžės). Vidiniai dėžių matmenys pateikiami centimetrais. Visų kamuolių skersmuo vienodas ir lygus D cm.

Parašykite programą, kuri nustatytų, kiek tarp turimų dėžių yra tinkamų duotiems kamuoliams pakuoti, taip pat apskaičiuotų mažiausios tinkamos dėžės matmenis ir rastų, kiek tokių dėžių yra.

Reikia sukurti procedūrą, skirtą duomenims skaityti iš bylos į masyvo tipo duomenų struktūras. Masyvų skaičių, jų duomenų tipus ir dydį pasirinkite savo nuožiūra.

Duomenys pateikiami faile Duom1.txt. Pirmoje eilutėje įrašytas kamuolio skersmuo, antroje – dėžių skaičius n (n £100). Tolesnėse n eilučių yra po tris skaičius, kurie reiškia dėžės matmenis centimetrais. Visi duomenys pateikiami sveikaisiais skaičiais.

Rezultatus reikia surašyti į failą Rez1.txt. Pirmoje eilutėje reikia įrašyti sakinį ‘Tinkamų dėžių yra: ‘ ir rastų dėžių skaičių. Antroje – sakinį ‘Mažiausia dėžė: ‘ ir tris skaičius, reiškiančius tokios dėžės matmenis. Jeigu tokios dėžės nėra, reikia palikti tuščią eilutę. Trečioje – sakinį ‘Mažiausių tinkamų dėžių yra: ‘ ir rastų dėžių skaičių.

Duom1.txt

11

8

13 11 11

4 19 25

36 40 50

11 13 11

16 11 12

11 10 13

19 17 8

13 9 19

Rez1.txt

Tinkamų dėžių yra: 4

Mažiausia tinkama dėžė: 11 13 11

Mažiausių tinkamų dėžių: 2

Matematinis sprendimo būdas. Kamuolys telpa dėžėje, jeigu jo skersmuo yra mažesnis už visus tris dėžės matmenis: D < a ir D < b ir D < c, čia a, b, c – dėžės matmenys. Mažiausia dėžė yra ta, kurios tūris mažiausias. Tūris randamas sudauginus visus tris dėžės matmenis

Pirkėjas

Parduotuvėje prie kasos išsirikiavo N pirkėjų (1 <= N <= 100).

Kiekvienas jų turi skirtingą prekių vienetų skaičių.

Kasininkė kiekvienos prekės kainai nuskaityti sugaišta t1 sek., o atsiskaityti su pirkėju t2 sek.

Po kiek sekundžių atsiskaitys pirkėjas, turintis daugiausiai prekių?

Kiek laiko kasininkė skirs tam pirkėjui?

Duomenų faile "duom.txt" pirmoje eilutėje parašyti trys skaičiai: t1, t2 ir N. Tolesnėse eilutėse (arba vienoje eilutėje) surašyti eilės tvarka pirkėjų turimų prekių skaičiai.

Rezultatų faile "rez.txt" vienoje eilutėje parašyti keturis skaičius:

  • pirkėjo, turinčio daugiausiai prekių, eilės numerį;
  • kiek surastas pirkėjas turi prekių;
  • po kiek sekundžių jis atsiskaitys kasoje;
  • kiek laiko sugaiš kasininkė su tuo pirkėju.

Privalomi reikalavimai programai.

Būtina sukurti ir panaudoti:

  • funkciją, skirtą duomenims skaityti iš failo į masyvo tipo duomenų struktūras. Masyvų skaičių, jų duomenų tipus ir dydį pasirinkite savo nuožiūra.
  • funkciją, skirtą pirkėjo, turinčio daugiausiai prekių, eilės numeriui rasti.
  • funkciją, kuri skaičiuoja, po kiek sekundžių nurodytas pirkėjas atsiskaito kasoje; pirkėjo eilės numeris funkcijai perduodamas parametru.

Stačiakampiai

n stačiakampių kraštinės lygiagrečios koordinačių ašims. Kiekvienas stačiakampis apibūdinamas dviejų priešingų kampų taškų koordinatėmis. Parašykite programą, kuri rastų stačiakampio (jei jis yra), esančio visų duotų stačiakampių sankirtoje koordinates. Žr. pav. – užbrūkšniuotas plotas.

Programoje turėtų būti funkcija, surandanti šį stačiakampį.

Pradiniai duomenys yra faile duom.txt:

  • pirmojoje eilutėje stačiakampių skaičius n,
  • kitose n eilučių stačiakampių koordinatės po 4 skaičius (apatinio kairiojo kampo koordinatės x1, y1 ir viršutinio dešiniojo kampo koordinatės x2, y2).

Rezultatų faile rez.txt turėtų būti įrašytos gauto stačiakampio koordinatės (jei toks egzistuoja) arba pranešimas Tokio stačiakampio nėra (priešingu atveju).

Pastabos. Programą sudarykite atsižvelgdami į programos sudarymo etapus. Paruoškite pradinių duomenų failų pavyzdžius.

Taškai koordinačių plokštumoje

Pradinių duomenų faile taskai.txt yra n taškų koordinatės x, y.

Sujungus kai kuriuos taškus galima gauti stačiakampius, kurių kraštinės lygiagrečios koordinačių ašims.

Parašykite programą, kuri nustatytų kiek galima sudaryti tokių stačiakampių.

Rezultatą – stačiakampių skaičių reikia įrašyti į failą staciakampiai.txt

Mokinių sąrašas

Turime visų klasės mokinių 4 dalykų valstybinių egzaminų įvertinimus faile duom.txt.

Norime apskaičiuoti kiekvieno mokinio įvertinimų aritmetinį vidurkį. Rezultatus reikia surašyti į failą rez.txt, kurioje mokinių sąrašas (pvz., vardas, pavardė, vidurkis) būtų sudarytas vidurkio mažėjimo tvarka.

Klasė

Tekstiniame faile duom.txt surašyti duomenys apie mokinius: vardas (12 pozicijų), pavardė (15 pozicijų), klasė (3 pozicijos), pažymių skaičius ir pažymiai (1 <= p <= 20) atskirti vienu tarpu:

duom.txt

4

Jonas Jonaitis 4c 6 9 8 9 9 8 8

Petras Petraitis 4b 7 10 10 10 10 10 10 10

Petras Jonaitis 4a 7 10 10 10 10 9 10 9

Jonas Petraitis 4b 6 9 6 9 9 5 8

Parašykite programą, kuri nuskaitytų duomenis iš failo ir surašytų juos rezultatų faile: vardas, pavardė, klasė, pažymių vidurkis. Rezultatų faile rez.txt duomenys surašyti į lentelę:

+---------+--------------+--------------+

| Vardas | Pavardė | Vidurkis |

+---------+--------------+--------------+

| Petras | Petraitis | 10 |

| Petras | Jonaitis | 9.71 |

| Jonas | Petraitis | 7.67 |

| Jonas | Jonaitis | 8.5 |

+---------+--------------+--------------+

Programą papildykite funkcija, kuri surikiuoja mokinius pagal vidurkį didėjančiai.

Šokėjai

Tekstiniame faile balai.txt surašyti:

šokėjų skaičius (pirmojoje eilutėje),

šokėjų vardai, pavardės (25 simboliai įskaitant tarpą) ir 8 teisėjų už šokėjų pasirodymą skirti balai,

pvz.:

3

Margarita Vanagaitė 10 8.5 9 7.5 8 8 9 8

Dovilė Dovydaitė 9 8.5 7 7.5 8 7 9 8

Irina Popova 6 5 7.5 5 8 7.5 8 6

Parašyti programą, kuri apskaičiuotų kiekvieno šokėjo balų vidurkį atmetus didžiausią ir mažiausią įvertinimą, išrikiuotų šokėjus pagal užimtą vietą.

Rezultatų faile rezultatai.txt reikia įrašyti: šokėjo užimtą vietą, vardą ir pavardę, taškų vidurkį, teisėjų įvertinimus be didžiausio ir mažiausio balo.

Užduotis 2013-04-11