program Racunanje_cijene_plina; uses crt,graph; type pokazivac=^struktura; struktura=record ime:string[30]; mjesto:string[20]; ulica:string[50]; postanski_broj:integer; v:real; e:real; eo:real; cbruto:real; cneto:real; p:pokazivac; end; var trenutni,pocetni,prethodni:pokazivac; i:integer;
{PROCEDURA ZA UNOS NOVOG ELEMENTA LISTE:} procedure dodaj; begin new(trenutni); clrscr(); writeln('UNOS PODATAKA'); writeln('======================'); write('Ime i prezime korisnika => '); readln(trenutni^.ime); write('Mjesto u kojem korisnik stanuje => '); readln(trenutni^.mjesto); write('Ulica u kojoj korisnik stanuje => '); readln(trenutni^.ulica); write('Broj na kojem korisnik stanuje => '); readln(trenutni^.postanski_broj); write('Unesite potrosenu kolicinu plina,kubikazu =>'); readln(trenutni^.v); trenutni^.e:=trenutni^.v * (33.33835/3.6); trenutni^.eo:=trenutni^.e-trenutni^.v*9.2607; trenutni^.cbruto:=trenutni^.e*0.252357+trenutni^.eo*0.183571; trenutni^.cneto:=trenutni^.cbruto*1.25; trenutni^.p:=pocetni; pocetni:=trenutni; end;
{PROCEDURA ZA BRISANJE KORISNIKA} procedure obrisi; var ime:string[30]; nadjen:boolean; begin clrscr(); writeln ('Unesite korisnika kojeg zelite ukloniti => '); readln(ime); trenutni:=pocetni; prethodni:=nil; nadjen:=false; while (trenutni<>nil) and not nadjen do begin if ime<>trenutni^.ime then begin prethodni:=trenutni; trenutni:=trenutni^.p; end else nadjen:=true; end; if nadjen then begin if prethodni=nil then pocetni:=trenutni^.p; if (prethodni <> nil) and (trenutni<>nil) then prethodni^.p:=nil; dispose(trenutni); writeln('Obrisan je',ime); end else writeln('Nema tog korisnika!'); end;
{PROCEDURA ZA RAČUNANJE UKUPNU CIJENU PLINA} procedure vrijednost; var a,b,c,d:real; begin trenutni:=pocetni; b:=0; a:=0; d:=0; c:=0; clrscr(); writeln('UKUPNA VRIJEDNOS,KOLICINA,ENERGIJA,CIJENA'); writeln('======================='); while trenutni<>NIL do begin a:=a+trenutni^.v; b:=b+trenutni^.e; c:=c+trenutni^.cbruto; d:=d+trenutni^.cneto; trenutni:=trenutni^.p; end; writeln('======================='); writeln('Potrosen plin=>',a:4:2,'metara kubicnih'); writeln('Potrosena energija=>',b:4:2,'MJ'); writeln('Cijena bez poreza=>',c:4:2,'kn'); writeln('Cijena s porezom=>',d:4:2,'kn'); writeln; readln; end;
{PROCEDURA ZA RAČUNANJE UKUPNU CIJENE PLINA U JEDNOJ ULICI} procedure ulica; var a,b,c,d:real; s,k:string; begin trenutni:=pocetni; clrscr(); b:=0; a:=0; d:=0; c:=0; writeln('Unesite ime grada u kojem korisnici se nalaze'); readln(k); writeln('Unesite ime ulice u kojoj korisnici se nalaze'); readln(s); writeln('UKUPNA VRIJEDNOST,KOLICINA,ENERGIJA,CIJENA ULICE'); writeln('======================='); while trenutni<>NIL do begin if (k=trenutni^.mjesto) and (s=trenutni^.ulica) then begin a:=a+trenutni^.v; b:=b+trenutni^.e; c:=c+trenutni^.cbruto; d:=d+trenutni^.cneto; end else writeln('Ulica nije nadjena'); trenutni:=trenutni^.p; end; writeln('======================='); writeln('Potrosen plin=>',a:4:2,'metara kubicnih'); writeln('Potrosena energija=>',b:4:2,'MJ'); writeln('Cijena bez poreza=>',c:4:2,'kn'); writeln('Cijena s porezom=>',d:4:2,'kn'); writeln; readln; end;
{PROCEDURA ZA RAČUNANJE CIJENE PLINA ZA JEDNOG KORISNIKA} procedure korisnik; var a,b,c,d:real; s:string; begin trenutni:=pocetni; clrscr(); a:=0; b:=0; d:=0; c:=0; writeln('Unesite korisnika o kojem zelite saznati podatke'); readln(s); writeln('UKUPNA VRIJEDNOST,KOLICINA,ENERGIJA,CIJENA ULICE'); writeln('======================='); while trenutni<>NIL do begin if s=trenutni^.ime then begin a:=a+trenutni^.v; b:=b+trenutni^.e; c:=c+trenutni^.cbruto; d:=d+trenutni^.cneto; end else writeln('Korisnik nije nadjen'); trenutni:=trenutni^.p; end; writeln('======================='); writeln('Potrosen plin=>',a:4:2,'metara kubicnih'); writeln('Potrosena energija=>',b:4:2,'MJ'); writeln('Cijena bez poreza=>',c:4:2,'kn'); writeln('Cijena s porezom=>',d:4:2,'kn'); readln; end;
{PROCEDURA ZA RAČUNANJE UKUPNU CIJENU PLINA U JEDNOM MJESTU} procedure grad; var a,b,c,d:real; s:string; begin trenutni:=pocetni; clrscr(); a:=0; b:=0; c:=0; d:=0; writeln('Unesite ime mjesta koje zelite analizirati'); readln(s); writeln('UKUPNA VRIJEDNOST,KOLICINA,ENERGIJA,CIJENA MJESTA'); writeln('================================================='); while trenutni<>NIL do begin if s=trenutni^.mjesto then begin a:=a+trenutni^.v; b:=b+trenutni^.e; c:=c+trenutni^.cbruto; d:=d+trenutni^.cneto; end else writeln('Mjesto nije nadjeno'); trenutni:=trenutni^.p; end; writeln('================================================='); writeln('Potrosen plin=>',a:4:2,'metara kubicnih'); writeln('Potrosena energija=>',b:4:2,'MJ'); writeln('Cijena bez poreza=>',c:4:2,'kn'); writeln('Cijena s porezom=>',d:4:2,'kn'); writeln; readln; end;
{PROCEDURA ZA UNOS PODATAKA U TEKSTUALNU DATOTEKU} procedure tekst; var f:text; begin trenutni:=pocetni; clrscr(); assign(f,'plin.txt'); rewrite(f); while trenutni<>NIL do begin writeln(f,trenutni^.ime:30,trenutni^.mjesto:20,trenutni^.ulica:50,trenutni^.postanski_broj,trenutni^.e:2:4,trenutni^.cbruto:2:4,trenutni^.cneto); trenutni:=trenutni^.p; write('#'); end; writeln; close(f); readln; end;
{PROCEDURA ZA USPOREDBU BAR GRAFOM KOLICINE PLINA} procedure koordinatni; var gd,gm:smallint; x,y,n,i:integer; k:array[1..1000] of string[30]; l:array[1..1000] of integer; begin detectgraph(gd,gm); initgraph(gd,gm,''); clrscr(); x:=0; y:=getmaxy div 2; writeln('Ucitajte zeljeni broj ljudi koje zelite graficki usporediti'); readln(n); for i:=1 to n do begin writeln('Unesite ime osobe koju zelite usporediti'); readln(k[i]); end; while trenutni<>NIL do begin if k[i]=trenutni^.ime then for i:=1 to n do begin l[i]:=round(trenutni^.v); end; trenutni:=trenutni^.p; end; for i:=1 to n do begin setfillstyle(1,3); bar(x,y,x+10,y-l[i]); outtextxy(x,y+10,k[i]); x:=x+100; end; readln; closegraph; end;
{PROCEDURA ZA USPOREDBU CHUCKOVIM GRAFOM KOLICINE PLINA} procedure maxminusp; var gd,gm:smallint; x,y,z,e:integer; s,f:string[20]; begin detectgraph(gd,gm); initgraph(gd,gm,''); x:=10; y:=10; z:=0; e:=maxint; while trenutni<>NIL do begin i:=round(trenutni^.v); if i>z then begin s:=trenutni^.ime; z:=i; end; if i<e then begin f:=trenutni^.ime; e:=i; end; trenutni:=trenutni^.p; end; setcolor(4); circle(getmaxx div 2, getmaxy div 2, z); outtextxy(x,y,s); setcolor(3); circle(getmaxx div 2, getmaxy div 2, e); outtextxy(x,y+10,f); readln; closegraph; end;
procedure ekstremkubikaza; var a,u:integer; b,c:string[20]; begin trenutni:=pocetni; a:=0; clrscr(); while trenutni<>NIL do begin b:=trenutni^.ime; u:=round(trenutni^.v); if u>a then begin c:=b; a:=u; end; trenutni:=trenutni^.p; end; writeln('Najvise je potrosio:',c,' ',a,' kubika'); readln; end;
procedure minimum; var a,u:integer; b,c:string[20]; begin trenutni:=pocetni; a:=maxint; clrscr(); while trenutni<>NIL do begin b:=trenutni^.ime; u:=round(trenutni^.v); if u<a then begin c:=b; a:=u; end; trenutni:=trenutni^.p; end; writeln('Najmanje je potrosio:',c,' ',a,' kubika'); readln; end;
procedure ispis; begin trenutni:=pocetni; clrscr(); writeln('ISPIS'); writeln('======================='); while trenutni<>NIL do begin writeln('IME-',trenutni^.ime); writeln('ADRESA-',trenutni^.mjesto,' ',trenutni^.ulica,' ',trenutni^.postanski_broj); writeln('POTROSNJA-',trenutni^.v:4:2,'metara kubicnih'); writeln('CIJENA NETO-',trenutni^.cneto:4:2,'kn'); writeln('CIJENA BRUTO-',trenutni^.cbruto:4:2,'kn'); writeln('======================='); trenutni:=trenutni^.p; end; writeln; readln; end; begin pocetni:=NIL; repeat clrscr(); writeln('PROGRAM ZA RACUNANJE POTROSENOG PLINA'); writeln('=================================================================='); writeln('1. Dodaj podatke o korisniku'); writeln('2. Obrisi zeljenog korisnika'); writeln('3. Ispisi ukupnu vrijednost potrosenog plina plina,kolicinu i energiju'); writeln('4. Pronadite zeljenog korisnika'); writeln('5. Ispisi vrijednost potrosenog plina plina,kolicinu i energiju jedne ulice'); writeln('6. Ispisi vrijednost potrosenog plina plina,kolicinu i energiju jednog mjesta'); writeln('7. Upis u datoteku s nazivom plin'); writeln('8. Usporedi zeljeni broj korisnika bar grafom po kolicini potrosenog plina'); writeln('9. Usporedi maxpotrosaca i minpotrosaca plina'); writeln('10. Nadi osobu koja najvise trosi plin'); writeln('11. Nadi osobu koja najmanje trosi plin'); writeln('12. Ispisi ljude koji su uneseni'); writeln('0. Kraj'); write('Tvoj izbor => '); readln(i); case i of 1: dodaj; 2: obrisi; 3: vrijednost; 4: korisnik; 5: ulica; 6: grad; 7: tekst; 8: koordinatni; 9: maxminusp; 10:ekstremkubikaza; 11:minimum; 12:ispis; end; until i=0; end.
|