FONForum http://678540.1rf3m2gpa.asia/ |
|
Jos jedan zadatak iz pascala - Imam problema da resim zadatak salistama http://678540.1rf3m2gpa.asia/viewtopic.php?f=8&t=1347 |
Stranica 1 od 1 |
Autoru: | hodac [ 17.01.2003. 11:46:01 ] |
Tema posta: | |
napisati paskal program za pracenje glasanja na muzickom festivalu svaka pesma dobija ocenu zirija od 0 do 10, program treba da omoguci unos naziva pesme nazive izvodjaca, i broj osvojenih bodova, kao i izlistavanje rezultata po opadajucem broju bodova. Moze da glasa samo jedan covek, i trebalo bi da odmah izlistava stanje.Da naglasim da je ovde obavezno koriscenje lista.Oki pozeljno bi bilo i komentarisanje procedura vezanih za sortiranje sa listama, ker tu je meni glavni problem. |
Autoru: | kruzer [ 17.01.2003. 18:35:34 ] |
Tema posta: | |
Pa nemoj samo da napi |
Autoru: | zlatko [ 17.01.2003. 18:40:25 ] |
Tema posta: | |
Pa ti si se ba |
Autoru: | hodac [ 19.01.2003. 12:59:40 ] |
Tema posta: | |
Probao sam, ali imam problema sa pointerima, nisam isao na predavanja, a iz knjige se malo razumeva, a zbog toga je ceo zadatak povezan sa ovim (Zbog struktur epodataka).A sto da ne pitam, ovo mi je poslednji zadatak (ako ga uradim ne idem na kolokvijum), a i drugi kad nesto pitaju ja kazem ako znam. |
Autoru: | zlatko [ 20.01.2003. 09:50:45 ] |
Tema posta: | |
Ja sam ti u su |
Autoru: | hodac [ 22.01.2003. 00:00:51 ] |
Tema posta: | |
Kod: program pesme;
uses crt; type pokazivac=^izvodjac; izvodjac=record bodovi:integer; naziv:string[80]; pesma:string[30]; redB:integer; sledeci:pokazivac; end; {Ovako znam da uradim izvodjac=record naziv:string; pesma:string; bodovi:integer; end; lista=record redbr:integer; sledeci:pokazivac; end; a pokazivac bi presako u ^lista} var{Globalne promenjive} Redb:integer; {Na pocetku pitam koliko pesama ima, radi izlaza i radi odvojenog unsa imena , naziva pesme,da bih odvojio proces od glasanja} Prvi:pokazivac; {***************pocetak-----------------------------------------------------} Procedure ispis(prvi:pokazivac); {Ispisuje listu} var brojac:byte; begin brojac:=0; while (prvi <> nil) do begin writeln(prvi^.naziv:10,' | ',prvi^.pesma,':',prvi^.bodovi);{Ispisuje } prvi:=prvi^.sledeci; {Linujem na sledeci} {Pa nastavljam dalje} inc(brojac); {Zastita zbog duzine ekrana} if brojac=35 then begin;brojac:=0; end; end; end; Procedure Menu; var {Mora malo da se preradi} opcija:char; begin {smesna} writeln;writeln;writeln; writeln('.---+-----------+-----------------------.'); writeln('| | opcije: | |'); writeln('| 1 | ispis |'); writeln('| 2 | Glasj |'); writeln('| 3 | Promeni naziv pesme |'); writeln('| 4 | Snimi rezultat u datoteku |'); writeln('| | |'); writeln('| 5 | --> IZLAZ |'); writeln('+---'' |'); writeln('| |'); writeln('`---------------------------------------'''); Repeat opcija:=readkey; if not(opcija in ['1'..'5']) then continue else clrscr; case opcija of '1':sortl; {Sotiranje} '4':if (prvi<>nil) then begin ispis(prvi); writeln; writeln ('pritisni bilo koji taster za kraj'); readkey; clrscr; end else writeln('Lista je prazna'); end; Menu;{Rekurzijica} until opcija='5'; end; {Menu} Procedure isprazni (var temp1:pokazivac); {Procedura sluzi da isprazni listu, daje joj se samo pozicija odakle pocinjem da praznim listu, u pitanju su jednostruke liste} var temp2:pokazivac;{ lokalna promenjive cisto zbog promene} BEGIN writeln; while(temp1<>nil) do begin {Dok ne dodje na kraj} temp2:=temp1^.sledeci; {Menjam,da bi posle zamenio} dispose(temp1); {Praznim} temp1:=temp2; {Sa sledecom nastavljam} end; temp1:=nil;{Pozicija} end; Procedure linkovanje(var curr:pokazivac;var nw:pokazivac);{Dodaje u listu} BEGIN nw^.sledeci:=curr; curr:=nw; {Linkovanje jednog na drugi} END; Procedure redbroj(var redbroj:integer); begin writeln ('Ovaj program je namenjen za glasanje na muzickom festivalu'); writeln; WRITELN; WRITELN ('Sada unesite koliko ce biti takmicara'); repeat {$I-} readln (redbroj); if (ioresult<>0) or (redbroj<2) or (redbroj>20) writeln (perr); until (ioresult=0) and (redbroj>1) and (redbroj<21);{$i+}; end; Procedure sortl; {Sortirane} var nw,temp:Pokazivac; Procedure citajd(var nw:Pokazivac;autor,pesma:string); {Sluzi za glasanje, da se u slog ubaci bodovi} begin nw^.sledeci:=nil; writeln ('Molimo vas ocenite datu pesmu ocenom od 1 d0 10'); writeln(autor:14,':',pesma); readln(nw^.bodovi);{Ovo treba da se pobojsa u kasnijoj reviziji tako sto nece menajti vrednost vec sabirati} end; Begin if (prvi<>nil) then isprazni(prvi); {Oslobodi memoriju}} new(prvi); nw:=nil; {Ovde treba da se postovi nesto za uslov while ili repeat} new(nw); ispis(prvi);{Treba da ostampam stanje na tabeli pre glasanja} citajd(nw); IF (prvi^.bodovi > nw^.bodovi) THEN {Ako je veci od prvog ubaci ga iza prvog} linkovanje(prvi,nw) ELSE BEGIN temp:=prvi; while (temp^.sledeci <> NIL) AND (temp^.sledeci^.bodovi < nw^.bodovi) do temp:=temp^.sledeci; {A ako nije nastavi sekvencijalno} dodajl(temp^.sledeci,nw); END; end; temp:=nil; end; END; BEGIN {------------- MAIN PROGRAM ------------------------------------------} TextMode(c80+Font8x8); TextColor(4);TextBackground(7); {Ovde kasnije sredi nadogradnja za sada nisam podesio menije ali je to lamerska stvar, treba prvo da ide nesto kao broj prijavljenih ucesnika, pa onda da se ubaci njihov naziv i naziv pesme, pa onda da startuje meni, koji ce imati opcije tipa glasanje} clrscr; writeln; writeln; prvi:=nil; Menu; END.{main Ja sam samo dovde uspeo sam da dodjem. |
Autoru: | hodac [ 22.01.2003. 00:04:57 ] |
Tema posta: | |
Tacnije ovde me buni jedna sytvar samo.Ovaj zadatak bih uradio kada bise uporedo unosili naziv pesme, autor, i bodovi, ali ja hocu da razdvojim ova dva procesa.A nisam skontao kako. |
Autoru: | zlatko [ 23.01.2003. 06:49:48 ] |
Tema posta: | |
Onaj tvoj kod je nezavrsen i nije mi jasni |
Autoru: | hodac [ 24.01.2003. 13:27:25 ] |
Tema posta: | |
Hala zlatko, na zalost kasno, ooki evo i mog koda, sa nekim izmenama koje su naknadno zahtevane od asistenta. [code]PROGRAM lista1; uses crt; const broj=3; TYPE zirij=record ime:string; drzava:string; end; nizz=array[1..broj] of zirij; izvodjac = record ime: string; pesma:string; grad:string; drzava:string; bodovi:real; end; pl = ^cvor; {pokazivac na slog cvor} cvor = record {cvor jednostruko spregnute liste} podaci: izvodjac; veza: pl; end; VAR glava: pl; ziri:nizz; Procedure isprazni (var temp1:pl); {Procedura sluzi da isprazni listu, daje joj se samo pozicija odakle pocinjem da praznim listu, } var temp2:pl;{ lokalna promenjive cisto zbog promene} BEGIN writeln; while(temp1<>nil) do begin {Dok ne dodje na kraj} temp2:=temp1^.veza; {Menjam,da bi posle zamenio} dispose(temp1); {Praznim} temp1:=temp2; {Sa sledecom nastavljam} end; temp1:=nil;{Pozicija} end; Procedure velika(var s:string); Var i,j:integer; Begin j:=Length(s); For i:=1 to j Do s[i]:=UpCase(s[i]); end; {najva |
Stranica 1 od 1 | Sva vremena su u UTC + 1 sat |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |