programski jezici 2.. stampanje

Upload: ivan-jenackovic

Post on 06-Apr-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 PROGRAMSKI JEZICI 2.. stampanje

    1/6

    (PASCAL) Napisati funkciju za

    prevoenje dekadnog broja u rimski.U glavnom programu testiratinapisanu funkciju.program pis2;uses crt;var n:integer;st:string;ch:char;functionrim(n:integer):string;var s:string;begins:='';while n>=1000 do beginn:=n-1000; s:=s+'M' end;if n>=900 then begin

    s:=s+'CM'; n:=n-900 end;if n>=500 then begin n:=n-500; s:=s+'D' end;if n>=400 then begins:=s+'CD'; n:=n-400 end;while n>=100 do beginn:=n-100; s:=s+'C'; end;if n>=90 then begins:=s+'XC'; n:=n-90 end;if n>=40 then begins:=s+'XL'; n:=n-40 end;while n>=10 do begin n:=n-10; s:=s+'X' end;if n=9 then begins:=s+'IX'; n:=0 end;if n>=5 then begin n:=n-5; s:=s+'V' end;if n=4 then begins:=s+'IV'; n:=0 end;while n>=1 dobegin n:=n-1; s:=s+'I'end;

    rim:=s;end;beginrepeatwrite('n=? '); readln(n);st:=rim(n); writeln(st);writeln('Zelite jos Y/N');ch:=readkey until (ch='n')or (ch='N')end.

    (PASCAL) Data je matricaA(n n) ijisu elementi:a[i,j] = false, u suprotnom.

    true, ako postoj i direktan

    jednosmeran put izmeu gradova iij

    Napisati program kojim se formira iispisuje matrica iz koje se vidi kojigradovi imaju vezu sa najmanje

    jednim presedanjem.Ulaz : Matrica A(nxn) . Izlaz : Matrica

    veze C(nxn)program gradovi;const g=10;typematrica=array[1..g,1..g] ofboolean;var n:integer;veza, jednopres:matrica;procedurecitajveze(n:integer; varveza:matrica);var i,j,v:integer;beginwriteln('Unesi veze (1-da,0-ne) izmedju gradova');for i:=1 to n dobeginfor j:=1 to n dobeginread(v);if v=1 then veza[i,j]:=trueelse veza[i,j]:=false;

    end;readln;end;end;procedurepisiveze(brgradova:integer;a:matrica);var i,j:integer;beginwriteln('Matrica veze (1-da,0-ne)');for i:=1 to brgradova dobeginfor j:=1 to brgradova doif a[i,j] then write('1':2)else write('0':2);writeln;end;end;procedurelogproizvod(brgradova:integer; a,b:matrica; var

    c:matrica);var log:boolean;i,j,k:integer;beginfor i:=1 to brgradova dofor j:=1 to brgradova dobeginlog:=false;

    for k:=1 to brgradova dolog:=log or (a[i,k] andb[k,j]);c[i,j]:=log;end;end;beginwrite('Broj gradova? ');readln(n);writeln('Veze izmeugradova?');citajveze(n,veza);logproizvod(n,veza,veza,jednopres);pisiveze(n,jednopres);end.

    (C) Na obali nekog ostrva nalazi se n

    gradova oznaenih brojevima od 0 don-1. Oko celog ostrva je izgraen

    autoput koji prolazi kroz svaki odgradova. U nizu dsu data rastojanjaizmeu gradova, tako da d[i]

    predstavlja duinu autoputa izmeugradova ii i+1 (d[n-1] predstavljaduinu puta izmeu grada n-1 i 0).

    Napisati program koji za sve gradoveodreuje niz najkraih rastojanja doostalih gradova.

    #includefloat rastojanje(int i, intj, int n, float d[10]){ float rl,rd;int k;rl=rd=0;for(k=i; k

  • 8/3/2019 PROGRAMSKI JEZICI 2.. stampanje

    2/6

    { if(b[j]!=last){ c[(*k)++]=b[j]; last=b[j]; }j++;}else{ if(a[i]!=last) {c[(*k)++]=a[i]; last=a[i];}i++; j++;}}

    void main(){ int i,m,n,k;citaj(a,&m); citaj(b,&n);formiraj(a,b,c,m,n,&k);for(i=0; i

  • 8/3/2019 PROGRAMSKI JEZICI 2.. stampanje

    3/6

    { zadavanje pocetnihpodataka }prosti := [];sito := [2..max];next := 2;{glavni algoritam }while sito [] dobeginm := next;while m max);end;

    {stampanje prostih brojeva }for m := 1 to max doif m in prosti thenwrite(m:5);writeln;end.

    (C) Napisati program kojim serealizuje saimanje niza celih brojevabez korienja pomonog niza, tako to

    se svaka grupa jednakih elemenatazameni zbirom tih elemenata. Poslesvake zamene zamenjivanje poeti od

    poetka niza.#includeint isti(int i, int n, floata[])

    { int j=i+1;while(a[j]==a[i] && j

  • 8/3/2019 PROGRAMSKI JEZICI 2.. stampanje

    4/6

    complex = recordre, im:double;end;varz,rez:complex;eps:double;procedure sabiranje (x,y:complex; var z:complex);beginz.re := x.re + y.re;z.im := x.im + y.im;end;proceduremnozenje(x,y:complex; varz:complex);beginz.re := x.re*y.re -

    x.im*y.im; z.im :=x.re*y.im + x.im*y.re;end;functionmoduo(c:complex):double;beginmoduo := sqrt( sqr(c.re) +sqr(c.im) );end;procedure ucitaj(varc:complex);beginwriteln; write(' Realnideo = ? '); read(c.re);write(' Imainarni deo = ?'); readln(c.im);end;procedurestampaj(c:complex);beginwrite(' (', c.re:22:14, '.',c.im:22:14, ' ) ');

    end;procedure compexp(z:complex;eps:double; var ez:complex);var n:integer;clan:complex;beginclan.re:=1; clan.im:=0;ez:=clan;n:=0;while moduo(clan)>=eps dobeginn:=n+1; z.re:=z.re/n;z.im:=z.im/n;mnozenje(clan,z,clan);sabiranje(ez,clan,ez);end;end;

    beginucitaj(z); write(' Tacnost='); readln(eps);compexp(z,eps,rez);

    stampaj(rez);end.

    (PASCAL), (C) Definisana jestruktura koja predstavlja datum:

    type datum=record

    dan:1..31;

    mesec:1..12;

    godina:0..maxint;

    end;

    Zatim je definisana struktura kojasadri jedno polje tipa datum i jednopolje tipasting:praznik=record

    d:datum;

    naziv:string[30];

    end;Ova struktura reprezentuje

    jedan praznik. U programu formirati

    niz datuma koji predstavljajupraznike.

    Reenje u Pascalu:

    program Praznici;

    type datum=record

    dan:1..31;mesec:1..12;godina:0..maxint;end;praznik=recordd:datum;naziv:string[30];end;procedure CitajPraznik(varp:praznik);beginwith p dobeginwith d dobeginwrite('Dan = ? ');

    readln(dan);write('Mesec = ? ');readln(mesec);write('Godina = ? ');readln(godina);end;write('Naziv praznika ? ');readln(naziv);end; {with }

    end;procedurePisiPraznik(p:praznik);beginwriteln(p.naziv);writeln;writeln(p.d.dan,'.',p.d.mesec,'.',p.d.godina,'.');writeln;end;vari,n:integer;a:array[1..30] of praznik;beginreadln(n);writeln('Zadati podatke za',n,' praznika:');

    for i:= 1 to n doCitajPraznik(a[i]);writeln; writeln;

    for i:=1 to n dobeginwriteln(i,'. praznik:');PisiPraznik(a[i]);end;readln;end.

    Reenje u jeziku C:

    #include#includetypedef struct{ int dan, mesec, godina; }datum;typedef struct{ char naziv[30];datum d;

    }praznik;

    void CitajPraznik(praznik*p){ int d,m,g;printf("Dan = ? ");scanf("%d", &d);printf("Mesec = ? ");scanf("%d", &m);printf("Godina = ? ");scanf("%d", &g);p->d.dan=d; p->d.mesec=m;p->d.godina=g;printf("Naziv praznika ? ");gets(p->naziv); gets(p->naziv);}void PisiPraznik(praznik p){ puts(p.naziv);printf("\n%d.%d.%d.\n\n",p.d.dan,p.d.mesec,p.d.godina);

    }void main(){ int i,n;praznik a[30];scanf("%d",&n);printf("Zadati podatke za %dpraznika:\n",n);for(i=0;i

  • 8/3/2019 PROGRAMSKI JEZICI 2.. stampanje

    5/6

    for i:=1 to d do if s[i]=' 'then s[i]:='.';

    m:=d div 5; k:=0;for i:= 1 to m dofor j:= 1 to 5 dobegink:=k+1; mat[i,j]:=s[k];end;for j:= 1 to 5 dofor i:=1 tO m do r:=

    r+mat[i,j];writeln(g, r);Close(f); Close(g);end.

    (P ASCAL) Zadato je nekoliko taakasvojim koordinatama. Svaka taka imatri koordinate, a sve koordinate su celi

    brojevi koji po apsolutnoj vrednostinisu vei od 30000. Taaka nema vieod 200. Ispisati koordinate take za

    koju je zbir rastojanja do ostalihtaaka minimalan. Koordinate taakaodvojiti prazninom. Ako ima vie

    takvih taaka, tampati bilo koju.

    program Tacke;

    type Tacka= recordx,y,z:integer;end;NizTacaka=array[1..200]ofTacka;var ZR,MZR:real;i,n,k:integer;T:NizTacaka;

    functionZbirRastojanja(i,n:integer;T:NizTacaka):real;

    var j:integer;s:real;begins:=0;for j:=1 to n dos:=s+sqrt(sqr(T[i].xT[j].x)+sqr(T[i].yT[j].y)+sqr(T[i].z-T[j].z));ZbirRastojanja:=s;end;beginreadln(n);for i:=1 to n dobeginreadln(T[i].x,T[i].y,T[i].z)

    ;end;k:=1; {k je indeks tackesa minimalnim zbiromrastojanja}MZR:=ZbirRastojanja(1,n,T);for i:=2 to n do

    beginZR:=ZbirRastojanja(i,n,T);if ZRmaxd thenbegin maxd:=d; maxs:=sp1;end;endend;if maxs='' then writeln('Nepostoji zajednickipodstring')else writeln('Maksimalnizajednicki podstring je',maxs);end.

    (C) Data je matricaAm n celih brojeva.Element a[i,j] je vrh, ako je vei odsvojih susednih elemenata koji su

    iznad, ispod, sa leve i sa desne strane.Visina vrha je razlika izmeu elementai njegovog najvieg suseda. Napisati

    program koji e formirati niz vrhovasortiran u nerastui redosled po visini.#include

    int vrh(int i, int j, int m,int n, int a[10][10]){ if(i==0 && j==0)return(a[i][j]>a[i][j+1] &&a[i][j]>a[i+1][j]);else if(i==m-1 && j==n-1)return(a[i][j]>a[i-1][j] &&a[i][j]>a[i][j-1]);else if(i==0 && j==n-1)

    return(a[i][j]>a[i][j-1] &&a[i][j]>a[i+1][j]);else if(i==m-1 && j==0)return(a[i][j]>a[i-1][j] &&a[i][j]>a[i][j+1]);else if(i==0)return(a[i][j]>a[i][j-1] &&a[i][j]>a[i+1][j] && a[i][j]>a[i][j+1]);else if(j==0)return(a[i][j]>a[i-1][j] &&a[i][j]>a[i][j+1]&&a[i][j]>a[i+1][j]);else if(i==m-1)return(a[i][j]>a[i-1][j] &&a[i][j]>a[i][j-1] &&a[i][j]>a[i][j+1]);

    else if(j==n-1)return(a[i][j]>a[i-1][j] &&a[i][j]>a[i][j-1] &&a[i][j]>a[i+1][j]);else return(a[i][j]>a[i-1][j] && a[i][j]>a[i][j-1] &&a[i][j]>a[i+1][j] && a[i][j]>a[i][j+1]);}int min2(int x, int y){if(x

  • 8/3/2019 PROGRAMSKI JEZICI 2.. stampanje

    6/6

    Dekartove : d:=sqrt(sqr(A.x-B.x) + sqr(A.y-B.y));

    Polarne : d:=sqrt(sqr(A.x-B.r*cos(B.fi))+

    sqr(A.y-B.r*sin(B.fi)) )

    end;Polarne :case B.Kord ofDekartove : d:=

    sqrt(sqr(A.r*cos(A.fi)-B.x)+

    sqr(A.r*sin(A.fi)-B.y) );

    Polarne : d:=

    sqrt(sqr(A.r*cos(A.fi)-B.r*cos(B.fi))+sqr(A.r*sin(A.fi)-

    B.r*sin(B.fi)))end;end;writeln('d = ',d:0:4);readln;end.

    Reenje u jeziku C.

    #include#includetypedef enum { Dekartove,Polarne }TipKor;typedef struct

    { double x,y; } Dek;typedef struct{ double r,fi; } Pol;typedef struct{ TipKor tip;

    union{Dek DK;Pol PK;

    };} koordinate;

    void ucitaj(koordinate *Q){ int ch;double u,v;printf("Tip koordinata? 1 zaDekartove, 2 za polarne: ");scanf("%d", &ch);printf("Koordinate? ");switch (ch){ case 1:Q->tip=Dekartove; scanf("%lf%lf", &u, &v);Q->DK.x=u; Q->DK.y=v;break;case 2:Q->tip=Dekartove; scanf("%lf

    %ld", &u,&v);Q->PK.r=u, Q->PK.fi=v;break;

    }}

    void main(){ koordinate A,B;double d;ucitaj(&A); ucitaj(&B);switch(A.tip){case Dekartove:switch(B.tip){case Dekartove:d=sqrt(pow(A.DK.x-B.DK.x,2)+pow(A.DK.y-B.DK.y,2));break;case Polarne:d=sqrt(pow(A.DK.x-

    B.PK.r*cos(B.PK.fi),2)+pow(A.DK.y-

    B.PK.r*sin(B.PK.fi),2));break;}break;case Polarne:switch(B.tip){case Dekartove:d=sqrt(pow(A.PK.r*cos(A.PK.fi)-B.DK.x,2)+pow(A.PK.r*sin(A.PK.fi)-B.DK.y,2));break;case Polarne:d=sqrt(pow(A.PK.r*cos(A.PK.fi)-B.PK.r*cos(B.PK.fi),2)+pow(A.PK.r*sin(A.PK.fi)-B.PK.r*sin(B.PK.fi),2));break;}

    break;}printf("%.4lf\n",d);}

    (Pascal) U prvom redu datoteke

    'zadl.in' dat je ceo broj n (1 n 1000),a u sledeih n redova je dat po jedanstring

    koji moe da se sastoji od velikih i

    malih slova, cifara, i specijalnih

    znakova. Ni jedan od stringova nesadri praznine na kraju. Napisatiprogram koji u datoteku 'zad1.out'upisuje broj stringova kod kojih je

    broj slova vei od broja ostalihznakova, a uz to je u njima brojsuglasnika vei od broja samoglasnika.

    program Zad1;type skup = set of char;functionIspunjava(s:string):boolean;var i,n,BSug,BSam,BS:integer;sam:skup;begin

    sam:=['a','e','i','o','u','A','E','I','O','U'];n:=length(s); BSam:=0;BSug:=0; BS:=0;for i:=1 to n dobeginif s[i] in ['a'..'z']+['A'..'Z'] thenbeginBS:=BS+1;if s[i] in sam thenBSam:=BSam+1else BSug:=BSug+1;end;end;Ispunjava := (BSam>BSug) and(BS>n-BS);end;

    var f,g:text;i,n,Broj:integer;s:string;

    beginassign(f,'zad1.in');reset(f);assign(g,'zad1.out');rewrite(g);readln(f,n);Broj:=0;for i:= 1 to n dobeginreadln(f,s);if ispunjava(s) thenBroj:=Broj+1;end;writeln(g,Broj);close(f); close(g);end.

    (Pas cal) Napisati program kojim se naosnovu niza a[1], ... , a[n] formiramatricaB iji su elementi prve kolone

    jednaki elementima datog niza, a i-takolona (i=2,...,n) se dobija ciklikim

    pomeranjem prethodne za jedno mestou desno. U prvom redu datoteke

    zad2.in se nalazi broj n, a drugom reduje zapisano n lanova niza a. MatricuB zapisati u datoteku zad2.out i to tako

    da u svakom redu te datoteke budezapisana po jedna vrsta.

    program Zad2;type niz=array[1..50] ofreal;matrica = array[1..50] of

    niz;procedure

    PomeriUdesno(n:integer; var x:niz);

    var i:integer; p:real;beginp:=x[n];for i:=n downto 2 do

    x[i]:=x[i-1];x[1]:=p;

    end;var f:text;a:niz; B:matrica;i,j,n:integer;beginassign(f,'zad2.in');reset(f);readln(f,n);for i:=1 to n doread(f,a[i]);close(f);assign(f,'zad2.out');rewrite(f);for j:= 1 to n doB[j,1]:=a[j];for i:= 2 to n dobeginPomeriUdesno(n,a);for j:= 1 to n doB[j,i]:=a[j];end;for i:=1 to n dobeginfor j:=1 to n dowrite(f,B[i,j]:0:5,' ');writeln(f);end;close(f);end.

    (C) Sastaviti na jeziku C funkcijukojim se odreuje broj razliitih

    elemenata u zadatom celobrojnom

    nizu. Sastaviti glavni program koji itanizove celih brojeva, u svakom od njihodredi broj razliitih elemenata iispisuje rezultate, sve dok za duinu

    niza ne proita nedozvoljenu vrednost.

    #include#define N 50

    /* Broj razlicitih elemenataniza. */int razliciti(int niz[N],int n){ int i, j, rez=0;for (i = 0; i