nizovi1

Embed Size (px)

Citation preview

  • 7/27/2019 nizovi1

    1/16

    PROSTI

    STANDARDNI PROSTI1. celobrojni2. realni3. logiki4. znakovni

    NESTANDARDNI PROSTI1. nabrojivi2. intervalni

    STRUKTUIRANI

    1. nizovni tip2. skupovni tip3. slogovni tip4. datoteni tip5. pokazivaki tip

    STRUKTUIRANI TIPOVI PODATAKA

    TIPOVI PODATAKA

    NIZOVNI TIP PODATAKA

    Nizovni tip opisuje ogranien, ureen skup promenljivih istog tipa, koje se nazivaju komponente (lanovi) niza.Svaki lan ima svoj indeks i tip-

    Npr. typeniz = array[1..100] of integer;

    varx:niz;

    ilivar x:arrray[1..100] of integer;

    1.Napisati program kojim se izraunava suma lanova datog niza x od n realnih brojeva.program niz1;uses wincrt;var x:array[1..50] of real;

    i,n:integer;s:real;

    beginwrite('Unesite broj elemenata niza: '); readln(n);s:=0;for i:=1 to n dobeginwrite('X[',i,'] =');readln(x[i]);s:=s+x[i];

    end;writeln('Zbir svih clanova niza je ',s:0:2);end.

    1

  • 7/27/2019 nizovi1

    2/16

    2. Izraunati srednju vrednost clanova niza X , koji se sastoji od n realnih elemenata.program niz1;uses wincrt;var x:array[1..50] of real;

    i,n:integer;s:real;

    beginwrite('Unesite broj elemenata niza: '); readln(n);s:=0;

    for i:=1 to n dobeginwrite('X[',i,'] =');readln(x[i]);s:=s+x[i];

    end;writeln('Srednja vrednost clanova niza je ',s/n:0:2); end.program niz1;

    uses wincrt;

    var x:array[1..50] of real;

    i,n:integer;

    s:real;

    beginwrite('Unesite broj elemenata niza: '); readln(n);

    s:=0;

    for i:=1 to n do

    begin

    write('X[',i,'] =');

    readln(x[i]);

    end;

    for i:=1 to n do

    s:=s+x[i];

    writeln('Srednja vrednost clanova niza je ',s/n:0:2);

    end.3.Odrediti aritmeticku sredinu nizaX (0 then

    begins:=s+a[i];br:=br+1;end;

    writeln('Aritmeticka sredina pozitivnih je ',s/br:0:2);end.

    2

  • 7/27/2019 nizovi1

    3/16

    4. Odrediti zbir pozitivnih Sp, i zbir negativnih Sn clanova niza X , koji se sastoji od n celih brojeva.program niz1;uses wincrt;var x:array[1..50] of integer;

    i,n,sp,sn:integer;beginwrite('Unesite broj elemenata niza: '); readln(n);sp:=0; sn:=0;for i:=1 to n do

    beginwrite('X[',i,'] =');readln(x[i]);if x[i]>0 then sp:=sp+x[i]

    else sn:=sn+x[i];end;

    writeln('Zbir pozitivnih clanova niza je ',sp);writeln('Zbir negativnih clanova niza je ',sn); end.5.Sastaviti algoritamsku emu i napisati program za odreivanje sume lanova niza prirodnih brojeva A, duine n , koji sumanji od 200 i deljivi sa 4.

    program cetvrti;uses wincrt;

    var i,n,s:integer;a:array[1..100] of integer;

    beginwrite('Unesite duzinu niza');readln(n);for i:=1 to n doreadln(a[i]);s:=0;for i:=1 to n doif (a[i]

  • 7/27/2019 nizovi1

    4/16

    7. Za uneti niz X celih brojeva od N elemenata odrediti zbir parnih clanova niza sa neparnim indeksom.I NACIN

    program zbir;uses wincrt;typeniz=array[1..100] of integer;varx:niz;i,n,s:integer;

    beginreadln(n);for i:=1 to n dobeginwrite('X[',i,']= ');readln(x[i]);

    end;s:=0;for i:=1 to n doif (i mod 2=1) and (x[i]mod 2=0) thens:=s+x[i];

    writeln('Zbir parnih sa neparnim indeksom je ',s);end.

    II NACIN sa WHILEprogram zbir;uses wincrt;typeniz=array[1..100] of integer;varx:niz;i,n,s:integer;

    beginreadln(n);for i:=1 to n dobeginwrite('X[',i,']= ');readln(x[i]);

    end;s:=0; i:=1;while i

  • 7/27/2019 nizovi1

    5/16

    9. Pronaci najmanji neparni element niza X celih brojevaduzine n.

    program najmNep;uses wincrt;typeniz=array[1..100] of integer;varx:niz;i,n,min:integer;

    beginreadln(n);for i:=1 to n do readln(x[i]);min:=x[1];for i:=2 to n doif x[i] mod 2=1 then

    if x[i]

  • 7/27/2019 nizovi1

    6/16

    12.Napisati program kojim se odredjuje koliko je ucesnika takmicenja iz programiranja imalo natprosecne rezultate.program natprosek;uses wincrt;var takmicar:array[1..100] of integer;

    i,n,s,brnatp:integer;pr:real;

    beginwriteln('Unesite broj takmicara: '); readln(n);writeln('Unosite broj osvojenih bodova za svakog takmicara:');

    for i:=1 to n dobeginwrite('Takmicar[',i,'] =');readln(takmicar[i]);

    end;s:=0;for i:=1 to n do s:=s+takmicar[i];

    pr:=s/n;brnatp:=0;for i:=1 to n doif takmicar[i]>pr then brnatp:=brnatp+1;

    writeln('Natprosecne rezultate je imalo ',brnatp,' takmicara.'); end.

    Isti zadatak uz pomoc FUNKCIJE I PROCEDUREprogram natprosek;uses wincrt;typeniz=array[1..100] of integer;varx:niz;n:integer;s:real;procedure ucitaj(n:integer; var a:niz);

    vari:integer;

    beginfor i:=1 to n dobeginwrite('Rezultat takmicara broj ',i,' je: ');readln(a[i]);

    end; end;function prosek(n:integer;a:niz):real;

    vari:integer;s:real;

    begin

    s:=0;for i:=1 to n do s:=s+a[i];prosek:=s/n;end;function brojNatprosecnih(n:integer;a:niz;ProsecRezult:real):integer;

    vari,broj:integer;beginbroj:=0;for i:=1 to n doif a[i]>ProsecRezult then broj:=broj+1;

    brojNatprosecnih:=broj;

    end;begin

    write('Unesite broj takmicara:');

    6

  • 7/27/2019 nizovi1

    7/16

    readln(n);writeln('Unesite rezultate takmicenja: ');ucitaj(n,x);s:=prosek(n,x);writeln('Natprosecne rezultate je imalo; ',brojNatprosecnih(n,x,s),' ucesnika.');end.13. Napisati program kojim se za date nizove a[1],a[2],a[n] i b[1], b[2],b[n], celih brojeva duzine n izracunava zbirS=a[1]*b[n]+a[2]*b[n-1],,a[n]*b[1].

    program naaa;

    uses wincrt;vara,b:array[1..100]of integer;n,i,s:integer;

    beginwriteln('Unesite broj elemenata nizova:');readln(n);writeln('Unosite elemente niza a: ');for i:=1 to n doreadln(a[i]);

    writeln('Unosite elemente niza b: ');for i:=1 to n do

    readln(b[i]);s:=0;for i:=1 to n dos:=s+a[i]*b[n+1-i];writeln('Rezultat je: ',s);end.14..Napisati program kojim se za date nizove a[1],a[2],a[n] i b[1], b[2],b[n], celih brojeva duzine n izracunava zbirS=a[1]*b[n]+a[2]*b[n-1],,a[n]*b[1]. Koristiti proceduru za ucitavanje nizova a i b.

    program naaa;uses wincrt;typeniz=array[1..100] of integer;vara,b:niz;n,i,s:integer;procedure ucitaj(n:integer; var x:niz);

    var

    i:integer;

    begin

    for i:=1 to n do

    readln(x[i]);

    end;

    begin

    writeln('Unesite broj elemenata nizova:'); readln(n);writeln('Unosite elemente niza a: ');ucitaj(n,a);writeln('Unosite elemente niza b: ');ucitaj(n,b);s:=0;for i:=1 to n dos:=s+a[i]*b[n+1-i];writeln('Rezultat je: ',s);end.

    14.2Uraditi isti zadatak, ali za izracunavanje zbira

    koristiti funkciju suma.program natprosek;uses wincrt;

    typeniz=array[1..100] of integer;

    vara,b:niz;n:integer;

    procedure ucitaj(n:integer; var x:niz);

    var

    i:integer;

    begin

    for i:=1 to n do

    readln(x[i]);

    end;

    function suma(n:integer;a,b:niz):integer;

    var

    i,s:integer;

    begins:=0;

    for i:=1 to n do

    s:=s+a[i]*b[n+1-i];

    suma:=s;

    end;beginwriteln('Unesite broj elemenata nizova:');readln(n);writeln('Unosite elemente niza a: ');ucitaj(n,a);writeln('Unosite elemente niza b: ');

    ucitaj(n,b);writeln('Rezultat je: ',suma(n,a,b));end.

    7

  • 7/27/2019 nizovi1

    8/16

    15. Napisati program kojim se na osnovu nizova b[1],b[2],..b[n] i c[1],c[2],c[n] formira niz a[1],a[2],..a[n], cije suvrednosti b[1],c[1],b[2],c[2],,b[n],c[n].Koristiti proceduru za ucitavanje nizova b i c, proceduru za formiranje novog niza a i proceduru za ispisivanje elemenatanovoformiranog niza a.

    program biggg;uses wincrt;typeniz=array[1..100]of real;

    var

    a,b,c:niz;n:integer;procedure ucitaj(n:integer; var x:niz);

    var

    i:integer;

    begin

    for i:=1 to n do

    readln(x[i]);

    end;

    procedure NoviNiz(n:integer;b,c:niz; var a:niz);

    var

    i:integer;

    beginfor i:=1 to n do

    begin

    a[2*i-1]:= b[i];

    a[2*i] := c[i];

    end; end;

    procedure ispisi(n:integer; var a:niz);

    var

    i:integer;

    begin

    for i:=1 to n do

    writeln(a[i]:0:2);end;

    beginwriteln('Unesite koliko elemenata ima niz: ');readln(n);writeln('Unesite elemente niza b: ');ucitaj(n,b);writeln('Unesite elemente niza c: ');ucitaj(n,c);

    NoviNiz(n,b,c,a);writeln('Novi niz a je: ');ispisi(2*n,a); {novi niz je duplo duzi}

    end.11. Napisati program kojim se realizuje ciklicno premestanje vrednosti elemenata niza a[1],a[2],..,a[n] za jedno mestoulevo. (npr. uneti niz je 1,2,3,4, a novi niz je 2,3,4,1)

    program pomerilevo1;uses wincrt;var x:array[1..100] of real;

    i,n:integer;pom:real;

    beginwrite('Unesite duzinu niza: '); readln(n);

    writeln('Unosite elemente niza: ');

    for i:=1 to n doreadln(x[i]);

    pom:=x[1];

    for i:=2 to n do

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

    x[n]:=pom;

    writeln('Pomereni niz je: ');for i:=1 to n dowriteln(x[i]:0:2);

    end.

    8

  • 7/27/2019 nizovi1

    9/16

    16. Napisati program kojim se realizuje ciklicno premestanje vrednosti elemenata niza a[1],a[2],..,a[n] za M mesta ulevo.(npr. uneti niz je 1,2,3,4,5,6, M=3 a novi niz je 4,5,6,1,2,3)

    Napravi se procedura kojom se vrsi pomeranje za 1 mesto ulevo, pa zatim se ta procedura u programu pozove M puta.program pomerilevoM; uses wincrt;type niz=array[1..100]of real;var x:niz;

    i,n,m:integer;procedure ulevo1(n:integer; var a:niz);

    var i:integer;

    pom:real;begin

    pom:=a[1];

    for i:=2 to n do

    a[i-1]:=a[i];

    a[n]:=pom;

    end;

    beginwrite('Unesite duzinu niza: '); readln(n);writeln('Unosite elemente niza: ');for i:=1 to n doreadln(x[i]);

    writeln('Za koliko mesta se pomera niz ulevo?');readln(m);for i:=1 to m doulevo1(n,x);writeln('Pomereni niz je: ');for i:=1 to n dowriteln(x[i]:0:2);end.17. Uneti niz X od N realnih elemenata pomeriti za jedno mesto udesno. (Npr. niz 4,5,6,7,8, izlaz je 8,4,5,6,7)

    program pomeridesno1;uses wincrt;var x:array[1..100] of real;

    i,n:integer;pom:real;

    beginwrite('Unesite duzinu niza: '); readln(n);writeln('Unosite elemente niza: ');for i:=1 to n doreadln(x[i]);pom:=x[n];

    for i:=n downto 2 do

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

    x[1]:=pom;

    writeln('Pomereni niz je: ');

    for i:=1 to n dowriteln(x[i]:0:2);end.18. Uraditi isti zadatak sa pomeranjem niza za m mesta udesno.

    program pomeridesnoM;uses wincrt;type niz=array[1..100]of real;var x:niz; i,n,m:integer;

    procedure udesno1(n:integer; var a:niz);var i:integer; pom:real;

    beginpom:=a[n];

    for i:=n downto 2 do a[i]:=a[i-1];

    a[1]:=pom;end;

    beginwrite('Unesite duzinu niza: '); readln(n);writeln('Unosite elemente niza: ');for i:=1 to n doreadln(x[i]);

    writeln('Za koliko mesta se pomera niz?');readln(m);for i:=1 to m doudesno1(n,x);

    writeln('Pomereni niz je: ');

    for i:=1 to n dowriteln(x[i]:0:2);end.

    9

  • 7/27/2019 nizovi1

    10/16

    19. Uneti n elemenata niza X celih brojeva. Od parnih elemenata niza X formirati niz Y i ispisati elemente niza Y.program newniz;uses wincrt;varx,y:array[1..100] of integer;i,k,n:integer;

    beginwrite('Unesite duzinu niza: '); readln(n);

    writeln('Unosite elemente niza:');for i:=1 to n doreadln(x[i]);k:=0;for i:=1 to n doif x[i] mod 2 = 0 then

    begink:=k+1;y[k]:=x[i];end;

    writeln('Novi niz Y je:');for i:=1 to kdo

    writeln(y[i]);end.20.SA i program koji od unetog niza X celih brojeva duzine N formira novi niz Y ciju su clanovi neparnielementi niza X uvecani za 3.

    program newniz;uses wincrt;varx,y:array[1..100] of integer;i,k,n:integer;

    beginwrite('Unesite duzinu niza: '); readln(n);writeln('Unosite elemente niza:');for i:=1 to n doreadln(x[i]);k:=0;for i:=1 to n doif x[i] mod 2 = 1 then

    begink:=k+1;y[k]:=x[i]+3;

    end;

    writeln('Novi niz Y je:');for i:=1 to k dowriteln(y[i]); end.

    21. Iz unetog niza X realnih brojeva duzine N (n

  • 7/27/2019 nizovi1

    11/16

    22.Napisati program kojim se za dati niz X celih brojeva duzine n odredjuje broj razlicitih elemenenata niza uzpomoc f-je.(Za svaki element od 2. do n(i=2...n) se proverava da li medju elementima ispred njega(j=1...n) ima njemu

    jednakih. Ako nema brojac broj se uvecava za 1. Ako je i-ti elemt jednak bar jednom koji mu prethodi(j) prelazise na proveru sledeceg, a brojac se ne uvecava)

    program proop;uses wincrt;type

    niz=array[1..100]of integer;var x:niz;i,n:integer;function BrojRazlicitih(n:integer; a:niz):integer;var i,j,br:integer;beginbr:=1;for i:=2 to n dobeginj:=1;while a [j]a[i] do j:=j+1;

    if j=i then br:=br+1;end;

    BrojRazlicitih:=br;end;

    beginreadln(n);for i:=1 to n doreadln(x[i]);writeln('Broj razlicitih elemenata je ',BrojRazlicitih(n,x));end.23. Napisati program kojim se za dati niz X od n elemenata odredjuje indeks:a) prvog;b) poslednjeg elementa u nizu ija je vrednost maximalnaa) program najveciClan;uses wincrt;type

    niz=array[1..100] of integer;var

    x:niz;i,n,max,br:integer;

    beginreadln(n);for i:=1 to n do readln(x[i]);max:=x[1];for i:=2 to n doif x[i]>max then

    beginmax:=x[i];

    br:=i;end;

    writeln (br);end.

    b) program najveciClan;uses wincrt;type

    niz=array[1..100] of integer;var

    x:niz;i,n,max,br:integer;

    beginreadln(n);for i:=1 to n do readln(x[i]);max:=x[1];for i:=2 to n doif x[i]>= max then {jedina razl. je >=}

    beginmax:=x[i];

    br:=i;end;

    writeln (br);end.

    11

  • 7/27/2019 nizovi1

    12/16

    24.Napisati program kojim se u nizu X od N( max then

    beginmax:=x[i];br:=1;end

    else

    if x[i]=max then br:=br+1;writeln (br,' elemenata ima max vrednost ',max:0:2); end.

    b) program NizIndNajClan;uses wincrt;var x:array[1..100]of real;

    y:array[1..100] of integer;i,n,br:integer; max:real;

    beginwrite('Duzina niza: ');readln(n);for i:=1 to n dobegin

    write('X[',i,']=');readln(x[i]);

    end;max:=x[1]; br:=1; y[br]:=1;for i:=2 to n doif x[i]> max then

    beginmax:=x[i];br:=1;y[br]:=i;end

    elseif x[i]=max thenbeginbr:=br+1;y[br]:=i;

    end;writeln ('Niz Y od indeksa maksimalnih elemenata niza X:');for i:=1 to br dowriteln(y[i]);

    end.

    12

  • 7/27/2019 nizovi1

    13/16

    25. Za uneti niz X od N elemenata(n max then

    beginmax:=x[i];br:=1;end

    elseif x[i]=max then br:=br+1;

    writeln (br,' elemenata ima max vrednost ',max:0:2);k:=0;for i:=1 to n doif x[i]max then

    begink:=k+1;y[k]:=x[i];end;

    writeln('Novi niz je: ');for i:=1 to k dowriteln(y[i]:0:2);

    end.26.U nizu X od N(max1thenbegin{korekcija najvece i druge po velicini vrednosti}max2:=max1;max1:=a[i];

    end

    elseif (a[i]>max2) and (a[i]max1)then max2:=a[i];

    13

  • 7/27/2019 nizovi1

    14/16

    if max2-1E08then writeln('Druga po velicini max vrednost je :',max2:0:2)else writeln('Niz je constantan, nema druge po velicini vrednosti.');end.

    27.Visina decaka i visina devojcica se unosi u jednom nizu. Prilikom unosa visina ukoliko je devojcica stavljase znak minus ispred visine. Odrediti srednju visinu decaka i srednju visinu devojcica.

    program ppp;uses wincrt;

    vara:array[1..100]of real;n,i,brm,brz:integer;sm,sz:real;

    beginreadln(n);for i:=1 to n do readln(a[i]);sm:=0; brm:=0;sz:=0; brz:=0;for i:=1 to n doif a[i]>0 then

    beginsm:=sm+a[i];brm:=brm+1;end

    elseif a[i]sp then brn:=brn+1;

    writeln('Prosecna visina odeljenja je ',sp:0:2);

    writeln(brn,' ucenika ima natprosecnu visinu.');end.

    14

  • 7/27/2019 nizovi1

    15/16

    29.Niz se sastoji od prosecnih osena ucenika jednog odeljenja unetih redosledom kao u dnevniku. Odreditiredni broj ucenika cija je srednja ocena najbliza prosecnoj. Ako je vise takvih ucenika ispitati najmanji redni

    broj.program ppp;uses wincrt;vara:array[1..100]of real;i,n,br:integer;

    s:real;beginwrite('Unesite broj ucenika:');readln(n);writeln('Za svakog ucenika unosite srednju ocenu: ');for i:=1 to n dobeginwrite(i,'.-ti ucenik: ');readln(a[i]);end;

    s:=0;br:=0;

    for i:=1 to n do s:=s+a[i];s:=s/n; {prosek se racuna bez uvodjena nove promenljive}

    br:=1;for i:=2 to n doif abs(a[i]-s) < abs(a[br]-s) then br:=i;{da je trebao najveci redni broj samo znak max then

    beginmax:=a[i];brmax:=i;end;

    for i:=2 to n doif a[i]

  • 7/27/2019 nizovi1

    16/16

    31. Na raspolaganju su novcanice od 1000, 500, 100, 50, 10, 5, 2 i 1 dinar. Napisati program koji za uneti iznos odredjujenjegovo razbijanje tako da se prvo odvoji najveci moguci broj novcanica iduci od najkrupnije (od 1000 din.) do najsitnije(od 1 din.).U ovom resenju se koristi tipizirani niz. X. Kada je niz tipiziran tada se moze:- inicijalizovati pri deklarisanju;- mogu mu se menjati vrednosti indeksnih promenljivih (ovde to nije primenjeno);

    program tipizirani;uses wincrt;const

    x:array[1..9] of integer=(1000,500,100,50,20,10,5,2,1);vars,i,k:integer;

    beginwrite('unesite novcani iznos za razbijanje: ');readln(s);writeln('Razbijanje je: ');for i:=1 to 9 dobegink:=s div x[i]; {broj novcanica u iznosu x[i]}s:=s mod x[i]; {ostatak novca}if k>0 then writeln(k,' * ',x[i]);

    end;end.

    16