PDA

Prikaži potpunu verziju : Paskal - zadaci, POMOĆ?!!


ScoobyBu2
23.3.2011, 3:02
Zadatak 1

Ivana posmatra teniske mečeve na turniru u Tivtu. Za vrijeme zagrijavanja igrača na ekranu su se pojavile njihove statistike. Ivani je zapela za oko istorija mečeva dvaju igrača. Primijetila je da nešto nije u redu sa prethodnim rezultatima, tj. da neki od njih nisu ispravni. Dosjetila se da traži od vas da joj napišete program koji provjerava rezultate.
Teniski meč sastoji se od setova, a svaki set od gemova. Važe sljedeća pravila:
• Igrač dobija set ako ima 6 ili više gemova, i barem dva gema više od protivnika.
• Posebno, u prvom ili drugom setu (ali ne i u trećem), ako je rezultat 6:6, igra se još jedan zadnji gem u kojem se odlučuje pobjednik tog seta (tzv. tie-break).
• Meč završava kad jedan od igrača osvoji dva seta. Taj igrač je pobjednik.
Rezultat je ispravan ako je moguć meč koji se odvija prema gornjim pravilima, a završava tim rezultatom.Dodatno, ako je jedan od igrača Rože Federer (u ulazu "federer"), onda rezultat u kojem je on izgubio neki set ne može biti ispravan (jer opšte je poznato da je Federer vanzemaljac i da nikad ne gubi mečeve).
Napišite program koji če pomoći Ivani da provjeri ispravnost rezultata svakog meča.

Ulazni podaci
U prvom redu nalaze se imena dvaju igrača odvojena jednim razmakom. Oba imena su nizovi od po najviše 20 malih slova engleske abecede. Imena će biti različita.
U drugom redu nalazi se prirodan broj N (1 ≤ N ≤ 50), broj dosadašnjih susreta dvaju igrača.
Svaki od sljedećih N redova sadrži rezultat po jednog meča, koji se sastoji od rezultata pojedinih setova odvojenih po jednim razmakom. Broj setova u svakom meču je između 1 i 5.
Rezultati setova su u obliku "A:B", gdje su A i B brojevi gemova koje je osvojio svaki od igrača. Ti brojevi su cijeli, između 0 i 99 (uključivo).

Izlazni podaci
Za svaki od mečeva u ulazu, istim redom kojim su u ulazu, ispišite u jedan red "da" ako je rezultat ispravan ili "ne" ako nije ispravan.
--------------------------------------------------------------------------


Zadatak 2

Aleksa i Nikola postavljaju tenkiće na drvenu ploču podijeljenu na N * N kvadratića. Tenk se može u jednom potezu pomaknuti na jedno od četiri susjednih polja i taj pomak nazivamo korakom. Kažemo da tenk čuva red i kolonu u kojem se nalazi. Ni u kojem trenutku na istom polju ne smiju biti dva ili više tenka.
Nakon više sati igranja, Nikolina mama ih je pozvala na ručak, a oni su odlučili postaviti tenkove tako svaki tenk čuva jednu kolonu i jedan red, odnosno da se u svakom redu i svakoj koloni nalazi tačno jedan tenk. To moraju uraditi u minimalnom broju koraka.
Napišite program koji će pronaći minimalni broj koraka potreban za postavljanje tenkova, svaki u svoj red i kolonu, te niz koraka koji je potrebno učiniti.

Ulazni podaci
U prvom redu nalazi se prirodan broj N (5 ≤ N ≤ 500).
U sljedećih N redova nalaze se po dva broja R i S (1 ≤ R, S ≤ N) koji označavaju red i kolonu u kojem se pojedini tenk nalazi u trenutku kad je Nikolina mama zvala na ručak. Nijedna dva tenka ne nalaze se na istom polju.
Redovi su numerisani odozgo prema dolje, a kolone slijeva na desno. Tenkovi su numerisani od 1 do N redom kojim su navedeni u ulazu.
Izlazni podaci
U prvi red upišite broj K – minimalni broj koraka.
U sljedećih K redova upišite broj B i karakter C, odvojene razmakom. Broj B označava redni broj tenkića koji želite pomaknuti, a karakter C označava smjer i to 'L' – lijevo, 'R' – desno, 'U' – gore, 'D' – dolje.
Napomena: Rješenje ne mora biti jedinstveno.
--------------------------------------------------------------------------


Zadatak 3

Matija gleda na teletekstu rezultate fudbalskih utakmica i tabelu lige. U tabeli se za svaku ekipu nalazi pet podataka: ukupan broj odigranih utakmica, broj pobjeda, broj neriješenih utakmica, broj poraza i broj bodova. Ekipa za svaku pobjedu dobija 3 boda, a za svaki neriješen rezultat 1 bod.
Matija je primijetio da se vrijednosti nekih polja u tablici mogu odrediti iz drugih.
Napišite program koji dopunjava tabelu u kojoj su vrijednosti nekih polja nepoznate.
Podaci različitih ekipa nisu povezani, npr. moguće je da u tablici piše da su sve ekipe pobijedile u svim utakmicama (iako to u stvarnoj ligi nije moguće).
Za svaku ekipu je broj odigranih utakmica najviše 100.

Ulazni podaci
U prvom redu nalazi se prirodan broj N (1 ≤ N ≤ 1000), broj ekipa u ligi.
Svaki od sljedećih N redova sadrži po pet polja tabele za jednu ekipu odvojenih po jednim razmakom, redom pet podataka kao što je opisano u tekstu zadatka. Polje tabele sadržava cijeli broj (najmanje 0) ako je vrijednost polja poznata ili znak '?' (upitnik) ako je vrijednost nepoznata.
Ulazni podaci neće biti kontradiktorni i uvijek će biti moguće jednoznačno odrediti vrijednosti nepoznatih polja.

Izlazni podaci
Potrebno je štampati tabelu sa upisanim vrijednostima polja gdje nedostaju u ulazu.
--------------------------------------------------------------------------


Zadatak 4

Dat su sljedeći tipovi
TYPE Datum = record
dan. mjesec, godina: integer
end;
Radnik = record
ime: string[30];
godine_staza:integer;
plata:real;
zaposlen:datum;
end;
NizRadnika = array[1..80] of Radnik;

1. Napisati funkciju DobarDatum koja ima jedan argument tipa Datum i koja vraća TRUE ako je argument funkcije ispravan datum i FALSE ako nije ispravan. Obratiti pažnju na prestupne godine (one koje su djeljive sa 4 a nisu sa 100, a jesu sa 400. Npr. 2000, 1996 i 1892 su prestupne a 1900, 1800 i 2007 nisu prestupne).
2. Napisati funkciju IskusniRadnici koja ima tri argumenta:
• n – broj radnika (prirodan broj)
• rad - niz radnika od n elemenata
• gran - realan broj
i koja štampa imena svih radnika iz niza rad koji imaju više od gran godina službe. Funkcija vraća broj takvih radnika.


Napisati program koji testira napisane funkcije.
--------------------------------------------------------------------------

ScoobyBu2
23.3.2011, 3:09
Zadatak 5

Dat su sljedeći tipovi
TYPE Tacka = record
x,y:real;
End;
Krug = record
Centar : tacka;
R : real; {r – poluprecnik}
end;
NizKrugova = array[1..80] of Krug;
Scena = record
broj_elemenata:integer; {Manje od 80}
krugovi:NizKrugova;
end;

1. Napisati funkciju Presjek koja ima dva argumenta k1 i k2 tipa Krug i koja vraća TRUE ako krugovi k1 i k2 imaju zajedničkih tačaka i FALSE, ako krugovi nemaju presjeka.
2. Napisati proceduru UcitajDat(imedat:string; var sc:scena) koja iz tekstualne datoteke čije je ime dato argumentom imedat učitava podatke o krugovima u argument sc. U svakom redu tekstualne datoteke upisana su po tri realna broja razdvojena jednom bjelinom, gdje su prva dva broja koordinate centra a treći broj je dužina poluprečnika. Smatrati da nema više od 80 redova u datoteci.
3. Napisati proceduru UcitajDatBin(imedat:string; var sc:scena) koja iz binarne datoteke čije je ime dato argumentom imedat učitava podatke o krugovima u argument sc. Datoteka je tipa FILE of KRUG;
4. Napisati proceduru PromjenaDatBin(imedat:string; pos:integer; x:krug) koja mijenja element na poziciji pos u binarnoj datoteci imedat elementom x. Ako je pozicija „van“ datoteke, procedura ne treba da radi ništa.
5. Napisati funkciju BigCircle koja ima jedan argument tipa Scena i koja vraća indeks onog kruga iz Scene (ako takav krug postoji) koji ima površinu veću od sume površina svih ostalih krugova u Sceni i 0 ako takav krug ne postoji.
6. Napisati funkciju BoundingCircle koja ima jedna argument tipa Scena i koja štampa koordinate centra i poluprečnik onog kruga koji u sebi sadrži sve ostale krugove iz date scene, ako takav krug postoji. Funkcija vraća TRUE ako takav krug postoji i FALSE ako ne postoji.
7. Napisati proceduru Prepis koja ima tri argumenta – ulaz i izlaz tipa string i k1 tipa Krug i koja čita sve elemente i u tekstualnu datoteku čije je ime argument izlaz štampa koordinate centra i poluprečnike svih krugova iz binarne datoteke čije je ime argument ulaz takvih da imaju zajedničkih tačaka sa krugom k1.


Napisati program koji testira napisane funkcije.
-------------------------------------------------------------------------

Stvarno mi je potrebna pomoc, ako neko zna rijesiti u Free Pascal-u...

allokin
23.3.2011, 15:45
Нико ти неће решавати то. Барем покушај сам нешто да урадиш.