Takmicenje - zadaci mnogi

download Takmicenje - zadaci mnogi

of 38

Transcript of Takmicenje - zadaci mnogi

Zadatak 86: Neka su dati nizovi a i b dimenzija 10 mjesta iji su elementi pojedinane cifre dva broja od 10 cifara. Napii program kojim se sabiraju ta dva velika broja formiranjem niza c, iji su elementi pojedinane cifre proizale kao rezultat tog sabiranja. Koristei dato rjeenje saberi: 99999 99999 88888 88888

DATOTEKEZadatak 87: Napisat program za otvaranje datoteke za pisanje i za upis podataka u datoteku? Zadatak 88: Napisat program za unoenje reenice u kojoj treba ispisat: broj slova, broj suglasnika i broj rijei sa dva i vie samoglasnika? Zadatak 89: Napii program kojim se unosi ulazna reenica recen. U datoj recenici izbrii slovo 'd' i prikai novodobijeni string. Zadatak 90: Napii program kojim se unosi ulazna reenica recen. U datoj reenici umesto slova 'd' upii slovo x i prikai novodobijeni string. Zadatak 91: Napii program kojim se unosi ulazna reenica recen. U datoj recenici izbrii deo stringa koji nalazi izmeu malih zagrada i prikai novodobijeni string. Zadatak 92: Napisat program za uitavanje tekstualne datoteke, analizira je i ispisuje frekvenciju pojavljivanja pojedinih slova?

Zadatak 94: Napii program kojim se u cjelobrojnu datoteku a upisuju brojevi od 1 do 10 pojedinano. Zadatak 95: Napisat program za otvaranje datoteke za itanje, proita iz nje sve vrijednosti, zbroji ih i ispie sumu?

FUNKCIJE I PROCEDUREZadatak 96: Neka se sa tastature unosi napon u i struja i. Sraunati otpor kola r koristei funkciju otpor. Zadatak 97: Neka se sa tastature unosi cijeli brojevi n1 i n2. Koristei funkciju veci nai vei broj i prikazati ga. Zadatak 98: Neka se sa tastature unose etiri cijela broja n1, n2, n3 i n4. Koristei funkciju veci iz prethodnog zadataka nai najvei broj. Zadatak 100:

Neka se sa tastature unose stranice a i b pravougaonog trougla. Sraunati hipotenuzu c a za njeno izraunavanje koristi funkciju hipotenuza. Zadatak 101: Neka se sa tastature unose cjelobrojne promjenjive x i y koje mogu imati vrijednost 0, ili 1. Koristei funkciju eksluziv sraunati vrijednos izlaza za eksluzivno ili kolo. Zadatak 102: Napisat program koristei funkciju za kvadriranje uitanog prirodnog broja? Zadatak 103: Napisat program za pretvaranje rijeci u vidu stringa napisanih malim slovima u string napisan velikim slovima, koristit funkciju? Zadatak 104: Napisat program koji omogucuje da unesemo od 5 do 50 znakova u vidu stringova. Treba utvrdit koliko se puta pojavljuje slovo E i koliko ima praznina? Zadatak 105: U datoteci Podaci.dat napisat program za unos podataka u novu datoteku (Ime, Prezime i Godina roenja), za ispis podataka i unos podataka u postojeu datoteku? Zadatak 106: Reenice Opis algoritma Unutar funkcije main (glavnog programa) nalazi se petlja na ijem poetku se poziva funkcija citaj_string. Ona iz ulazne datoteke RECENICE.IN ita niz znakova (reenicu) sve dok ne naie na toku. Ukoliko smo naili na kraj datoteke funkcija vraa nulu, to je i izlaz iz glavne petlje u programu. Nakon to se uita reenica iz ulazne datoteke, poziva se funkcija nadji_sifru. Ona binarnim pretraivanjem provjerava da li se taj uitani string ve pojavio ranije u ulaznoj datoteci. Ako se pojavio, funkcija vraa ifru te reenice, a ako nije, vraa vrijednost -1 i ifru nove reenice i samu reenicu umee u polje zapisa sifre na odgovarajue mjesto, tako da reenice u tom polju ostanu sortirane. Zatim se u glavnom programu u ovisnosti o vrijednosti koju je vratila funkcija nadji_sifru zapisuje u izlaznu datoteku RECENICE.OUT pronaena ifra ili se zapisuje nova ifra i u datoteku RECENICE.DAT reenica i pripadajua ifra. Zadatak 107: Ugljen Opis algoritma Nakon uitavanja podataka iz ulazne datoteke UGLJEN.IN inicijalizira se polje zapisa rudari tako da se u obje varijable zapisa upisuje vrijednost -1. To polje e za svakog rudara sadravati informaciju o tome da li on trenutno radi ili ne radi. Npr. ukoliko se u varijabli pocetak nalazi vrijednost -1, to znai da taj rudar trenutno ne radi i da se u varijabli kraj nalazi broj koji nam kae kada je taj rudar zadnji put prestao raditi (to nam je bitno zbog duine pauze). S druge strane, ukoliko je vrijednost varijable kraj jednaka -1, to znai da taj rudar trenutno radi i varijabla pocetak nam kae kada je on zadnji put poeo raditi. Ukoliko se i u varijabli pocetak i u varijabli kraj nalazi vrijednost -1, to znai da taj rudar jo uope nije poeo raditi. Nakon gore spomenute inicijalizacije polja rudari poziva se rekurzivna funkcija rijesi sa 3 parametra (kod prvog poziva funkcije rijesi to su 1, 0 i 0). Funkcija rijesi pokuava na sve mogue naine rasporediti rudare tokom radnog vremena. Ona prvo popunjava prvi sat radnog vremena rudnika, tako da pokuava ubacivati radnike na posao s time da pazi koji se rudari mrze meusobno, pazi na maksimalna vremena koliko koji rudar moe raditi i na duinu pauze. Kada popuni prvi sat, funkcija popunjava drugi sat radnog vremena i tako dalje, sve dok ne popuni cijelo radno vrijeme s rudarima. Prvi parametar oznaava koji trenutno sat radnog vremena popunjavamo (poprima vrijednost izmeu 1 i broj_sati), drugi parametar je redni broj rudara kojeg pokuavamo ubaciti na posao (vrijednost

2

izmeu 0 i broj_rudara - 1) i trei parametar e nam u svakom trenutku sadravati vrijednost koliine do sada iskopane rude. I na kraju se u izlaznu datoteku UGLJEN.OUT zapisuje vrijednost varijable max_kolicina u kojoj e biti spremljena maksimalna koliina iskopane rude za neki raspored rudara.

Zadatak 108: Neka se sa tastature unosi prirodan broj n. Sraunaj zbir niza: s =1+22+33+...nn, pri emu se n-ti lan niza rauna u funkciji clan.

Zadatak 109:

1. Dva se prijatelja, Suljo i Mujo, za odmor od programiranja vole igrati igru memo ali se prepiru jer Suljo vrlobrzo broji bodove dok Mujo treba vie vremena. Pomozi im da vie vremena provedu igrajui se a manje prepirui. Napii program kojim e se upisati dva niza od 6 cifara ( 0-9 ). Broj cifara koje se nalaze na istom mjestu u oba niza spremi u varijablu CRNI, a broj preostalih istih cifara u oba niza (koje nisu na istim mjestima ) spremi u varijablu BIJELI. Svaka secifra evidentira (biljei) samo jednom. Vrijednosti varijabli CRNI i BIJELI treba ispisati. Primjer ULAZ: IZLAZ: prvi niz drugi niz crni bijeli 111233 011177 2 1 Zadatak 110:

2. Treba uitati jednu reenicu maksimalne duine 255 znakova. Svaki samoglasnik u reenici zamijeni saprvim suglasnikom ispred njega i napii ga velikim slovom. Ako je prvo slovo u rijei samoglasnik treba ga zamijeniti sa posljednjim suglasnikom u reenici. Sada reenicu podijeli u rijei i ispii jednu ispod druge. Nakon tako ispisanih rijei ispii ih ponovo ali ovaj puta sortirane po abecedi. Primjer ULAZ: Upii reenicu: povorka maski IZLAZ: Zamjena: pPvVrkK mMskK Ispis rijei: pPvVrkK mMsSkK Sortirani ispis rijei: mMskK pPvVrkK

Zadatak 111: Napisat program za simulaciju male igre. Treba u tri kolone i tri reda staviti crtifce (kao na sl), a zatim kada igra odabere red i stupac na to mjesto raunar stavlja X?

Zadatak 112:

3

Program za blokiranje i deblokiranje brojeva od 1 do 5 koji simuliraju igru pokera?

Zadatak 114: Neka se sa tastature unose vrijednosti otpornika r1 i r2 koji su meusobno paralelno vezani i neka je dat napon kola u=100 volti. Nai vrijednost struje i kola. Otpor kola sraunaj u proceduri otpor i to korienjem lokalnih i globalnih promjenjivih. Zadatak 116: Neka je sa tastature unose realne promenljive x i y, i neka se funkcija f rauna po formuli:

f=

x+

x2 y y2 x

Napisati program kojim se u proceduri funk rauna vrijednost data funkcije. Rezultat prikai u glavnom programu. Zadatak 118: Neka su data dva mjesta A i B ija je meusobna udaljenost s=90 km i neka se iz mjesta A i B krene vozila u isto vrijeme. Prvo vozilo se kree brzinom v1 a drugo v2 kilometara na sat. Sraunaj u proceduri put vrijeme kada e se ona susresti i duinu puta s1 i s2 koja su ona pojedinano prela. Ponovi raun tako da se drugo vozilo kree za 5 km/sat bre. Zadatak 120: Napisati program kojim se u proceduri zbir trai suma brojeva djeljivih sa 7 od 100 do 200. Rezultat prikai u glavnom programu Zadatak 121: Napii program kojim se iz prethodno formirane datoteke a nalazi zbir svih upisanih brojeva. Zadatak 122: Napii program kojim se u datoteku realnih brojeva a prvo unese i upie 5 brojeva. Nakon toga proitaj datoteku a i nai najvei upisani broj. Zadatak 124: Iz prethodno formirane datoteke a realnih brojeva formiraj datoteku b od onih brojeva koji su vei od 3. Prikai dobijenu datoteku b. Zadatak 125: Napii program za itanje podataka iz datoteke? Zadatak 127: Napisat program za upisivanje podataka u datoteku i to: imena, prezimena i godine roenja? Zadatak 128: Napisat program koristei procedure za upisivanje 10 stringova i ispisivanje istih? Zadatak 129: Napisat program za uitavanje prezimena, imena i godine roenja u datoteku podaci.dat? Zadatak 130: Napisat program za upisivanje podataka o ueniku u datoteku Ucenici.dat i njegovih ocijena? Zadatak 132: Napisat program za uitavanje imena, prezimena, adrese i starosti u vidu slogova, stim to treba da omoguite da moete to unositi neogranien broj puta? Zadatak 134: Napisat program za ispisivanje sluajnih brojeva, odnosno napravit generator sluajnih brojeva? Zadatak 135:

4

Napisat program za tipiziranje datoteke tj. treba da u datoteci prog.dat uitate i ispiete broj indeksa, prezimena i imena i datum prijave? Zadatak 136: Napisat program za uitavanje i ispisivanje podataka u datoteku prog.dat, kreiranje i otvaranje nove datoteke? Zadatak 137: 3. Mujo i Fata poeljeli su znati koliko je bilo prestupnih godina od neke zadane godine do danas ( 2003. godine ). Zanima ih i koliko je bilo takvih godina, za koje zbroj znamenaka od kojih se sastoji godina nije paran broj. Pomogni Muji i Fati te ispii oba rjeenja. Primjer ULAZ: Od koje godine da ponem: 1985 IZLAZ: Broj prestupnih godina je: 3 Broj godina sa neparnom sumom cifara je: 2

Zadatak 138: Krialjka Opis algoritma i rjeenja u oba programska jezika napisao Jurko Gospodneti. Opis algoritma Nakon unosa podataka program ih postavi u pravilan redosljed te u rekurzivnoj proceduri pokuava sastaviti ispravnu krialjku. To radi na taj nain da na svakoj dubini rekurzije pokuava ubaciti rije na mjestu u krialjci iza posljednje ubaene (od gornjeg lijevog kuta horizontalno po redovima sve do doljnjeg desnog kuta). Za svaku rije koju proba ubaciti horizontalno provjerava da li je potivajui dosada poznata slova u krialjci mogue u nju postaviti vertikalne rijei. Ako to nije mogue onda rije koja se trenutno isprobava ne odgovara na ovom mjestu, a ako se ustanovi da niti jedna rije iz rjenika ne odgovara na odreenom mjestu rekurzija se vraa jedan korak da bi promijenila neke od prije ubaenih rijei. Ako niti jedna rije ne odgovara na prvom mjestu (1, 1) krialjku nije mogue sloiti dok u sluaju da se ispravno popuni mjesto (5, 5) naena je ispravno popunjena krialjka. Zadatak 139: GRADOVI Za razliku od ruske krave koja ipak nije znala letjeti, Borna je jo uvijek iv. U meuvremenu se tvrtka BornaElektrisiti nevjerovatno proirila. O kljunim trafostanicama sada brinu terenski radnici koji koriste Krein program. Da, dobro je zaradio, hvala na pitanju. Da, i ja. BornaElektrisiti je tvrtka koja se iri i razvija inercijom. S poslovne strane to je odlino, ali Borni je postalo dosadno. Projektante koji rade na projektu elektrifikacije jedne junoafrike dravice odluio je platiti na dosta udan nain. Naime na sljedeem sastanku Borna e projektantima postavljati pitanja o novom projektu. Pitanja e biti oblika: "Da li su gradovi A i B spojeni dalekovodom?" na koja e projektanti odgovarati sa Da ili Ne. Borna e postavljati pitanja sve dok ne bude siguran da li e se elektro mrea te dravice sastojati iz jednog ili vie dijelova. Projektanti e biti plaeni po formuli broj_postavljenih_pitanja * 5 Kn. Pomozite projektantima da od Borne izvuku to vie kuna. Va zadatak je napisati dva potprograma i to: void init ( int n ); int connected ( int a , int b ); odnosno procedure init ( n : integer ); function connected ( a , b : integer ) : integer; Glavni dio programa prvo e pozvati va potprogram init. Njegov ulazni parametar n oznaava koliko ima gradova u dotinoj dravici. Nakon toga glavni dio programa poziva vau funkciju connected kad eli saznati da li su a i b spojeni dalekovodom. Ulazni parametri a i b oznaavaju gradove. Gradovi su oznaeni brojevima od 0 do n-1. Funkcija connected treba vratiti 0 ukoliko gradovi nisu spojeni, odnosno 1 ukoliko jesu. Ukratko, glavni dio programa predstavlja Bornu, a vaa funkcija connected projektante.

5

PRIMJER Borna i projektanti Za n=5 init( 5 ); Borna pita: "Da li su gradovi 0 i 1 spojeni dalekovodom?"connected( 0 , 1 ); Projektanti: "DA" connected vraa 1 connected( 1 , 2 ); pozivi vaih potprograma

Borna pita: "Da li su gradovi 1 i 2 spojeni dalekovodom?" Projektanti: "DA" connected vraa 1

Borna pita: "Da li su gradovi 2 i 3 spojeni dalekovodom?" Projektanti: "DA" connected vraa 1

connected( 2 , 3 );

Borna pita: "Da li su gradovi 2 i 4 spojeni dalekovodom?" Projektanti: "NE" connected vraa 0

connected( 2 , 4 );

Borna pita: "Da li su gradovi 3 i 4 spojeni dalekovodom?" Projektanti: "DA" connected vraa 1

connected( 3 , 4 );

U ovom trenutku Borna zakljuuje da e se elektromrea te dravice sastojati iz jednog dijela

Za n=5 init( 5 ); Borna pita: "Da li su gradovi 0 i 1 spojeni dalekovodom?" Projektanti: "NE" connected vraa 0 connected( 0 , 2 ); connected( 0 , 1 );

Borna pita: "Da li su gradovi 0 i 2 spojeni dalekovodom?" Projektanti: "NE" connected vraa 0

Borna pita: "Da li su gradovi 0 i 3 spojeni dalekovodom?" Projektanti: "NE" connected vraa 0

connected( 0 , 3 );

Borna pita: "Da li su gradovi 0 i 4 spojeni dalekovodom?" Projektanti: "NE" connected vraa 0

connected( 0 , 4 );

U ovom trenutku Borna zakljuuje da e se elektromrea te dravice sastojati iz vie dijelova. OPIS ALGORITMA Prvo to moramo primijetiti je da se u tekstu zadatka NE trai da prije poetka postavljanja pitanja procedura/funkcija init kreira mreu dalekovoda tj. odlui koji su gradovi spojeni, a koji nisu. Dakle, gradove treba spajati tokom samog ispitivanja. Druga jako vana stvar je da ako elimo navesti Bornu da postavi to vie pitanja moramo to kasnije odgovoriti da su dva grada spojena dalekovodom. Za svaki grad se moe maksimalno postaviti n-1 pitanja, pa je zakljuak da tek u n-1 pitanju za neki grad, treba odgovoriti da je on spojen s nekim drugim gradom (u suprotnom, ako bi odgovorili negativno, taj grad bi ostao izoliran i ispitivanje bi bilo prekinuto).

6

Zadatak 140: Napisat program koristei funkciju za izraunavanje zbira brojeva 5 i 7, ispisivanje vrijednosti sin(2)?

Zadatak 143: Neka je data ulazna datoteka radnici tekstualnog tipa u koju je uneseno prezime i ime radnika i njegova godina roenja. Napii program kojim se nalazi najstariji i najmlai radnik kao i prosjenu starost svih radnika. Zadatak 144: Napii program kojim se u tekstualnu datoteku ucenik unose podaci: prezime i ime, mjesto stanovanja i adresa. Program zavri kada se za prezime unese rije 'kraj'. Zadatak 145: Napii program kojim se iz prethodno formirane tekstualne datoteku ucenik, prikazuju na ekranu uneseni podaci. Zadatak 146: Napii proceduru za uitavanje i tampanje ugla koji je u glavnom programu opisan kao: type ugao=record stepen:0..359; minut:0..59; sekund:0..59

ZADACI SA TAKMIENJA

Zadatak 149: LJUDI Za zadanu skupinu ljudi treba nai najvei broj P takav da u toj skupini postoji grupa od P ljudi u kojoj se svake dvije osobe meusobno poznaju i najvei broj N takav da u skupini postoji grupa od N ljudi u kojoj se nikoje dvije osobe meusobno ne poznaju. Pretpostavlja se da se osobe koje imaju zajednikog poznanika takoer uzajamno poznaju. ULAZNI PODACI Ulazna datoteka s imenom LJUDI.DAT u svojoj prvoj liniji sadri prirodni broj S (broj osoba u zadanoj skupini ljudi) koji nije vei od 2500. U iduih S linija se nalaze imena tih osoba, po jedno u svakom retku; u razliitim linijama se nalaze razliita imena. Duljina svakog imena je najvie 20 znakova. Nakon zadnjeg imena slijedi linija s prirodnim brojem P (manjim ili jednakim od 12,000) i iza nje P linija od kojih svaka sadri dva razliita imena razdvojena tono jednim razmakom. Svako ime u tim parovima je jedno od S imena ljudi iz zadane skupine. Svaki par oznaava meusobne poznanike, tj. dvoje ljudi od kojih svaki poznaje onog drugog. IZLAZNI PODACI Program mora na ekran ispisati traene brojeve ovako : Broj clanova u najvecoj grupi medjusobnih poznanika : 58 Broj clanova u najvecoj grupi medjusobnih nepoznanika : 12 OPIS ALGORITMA

7

Na poetku se kreiraju vezane liste za svakog ovjeka posebno, a zatim kako se obrauju informacije o poznanstvima, one se spajaju u vee liste ljudi koji se meusobno poznaju. Na kraju je dovoljno prebrojiti koliko je ostalo takvih listi (to je maksimalni broj ljudi koji se meusobno ne poznaju), te pronai najveu listu i prebrojiti njene lanove (to je maksimalni broj ljudi koji se medjusobno poznaju). Zadatak 150:

TELEFONSKI BROJEVI Opis problema Mujina farma Mu nalazi se u planinskom selu koje moe imati samo esterocifrene telefonske brojeve izmeu 100-000 i 299-999. Mujo bi za svoju farmu htio odabrati telefonski broj koji zadovoljava barem jedan od slijedeih uvjeta: o o o broj se sastoji od najvie dvije razliite cifre (npr. 151-115 ili 222-222) broj kojeg ine prve tri cifre jednak je broju to ga ine druge tri cifre (npr. 178-178) cifre su poredane u rastuem redosljedu (npr. 135-578)

Ulazni podaci S tastature se unose estocifreni brojevi N i M ( N