TreciNiz&NoviBrojac

6
program ZadatakGrupeA; uses wincrt; type niz = array [1..11] of string; var n1,n2,n3: niz; i,m: integer; slovo: string; BEGIN writeln('Unesite clanove prvog niza: '); m:=0; for i:=1 to 5 do begin write(i, '. - '); readln(n1[i]); slovo:= copy(n1[i],1,1); if slovo = 'e' then begin m:=m+1; niz3[m]:=niz1[i]; end; end; writeln('Unesite clanove drugog niza: '); for i:=1 to 6 do begin write(i, '. - ');

description

Treci niz zadatak u Pascalu.

Transcript of TreciNiz&NoviBrojac

Page 1: TreciNiz&NoviBrojac

program ZadatakGrupeA;

uses wincrt;

type niz = array [1..11] of string;

var n1,n2,n3: niz;

i,m: integer;

slovo: string;

BEGIN

writeln('Unesite clanove prvog niza: ');

m:=0;

for i:=1 to 5 do

begin

write(i, '. - ');

readln(n1[i]);

slovo:= copy(n1[i],1,1);

if slovo = 'e' then

begin

m:=m+1;

niz3[m]:=niz1[i];

end;

end;

writeln('Unesite clanove drugog niza: ');

for i:=1 to 6 do

begin

write(i, '. - ');

Page 2: TreciNiz&NoviBrojac

readln(n2[i]);

delete(niz2[i],1,1);

insert('*', niz2[i], 1);

slovo:= copy(niz2[i],1,1);

if slovo = '*' then

begin

m:=m+1;

niz3[m]:=niz2[i];

end;

end;

writeln('Clanovi 3. niza su: ');

for i:=1 to m do

begin

write(i, '. - ',niz3[i]);

end;

END.

Ovo je jedan od standardnih zadataka sa 2 niza čije elemente sa određenim uslovima

prebacujemo u teći.

Iz prvog niza treba sve prebaciti koji počinju sa ‘e’

Page 3: TreciNiz&NoviBrojac

writeln('Unesite clanove prvog niza: ');

m:=0;

for i:=1 to 5 do

begin

write(i, '. - ');

readln(n1[i]);

slovo:= copy(n1[i],1,1);

if slovo = 'e' then

begin

m:=m+1;

niz3[m]:=niz1[i];

end;

end;

Uzeli smo ‘i’ kao brojač. Kako unosimo jedan po jedan string ‘i’ se povećava za 1. Da bi znali

koji string počinje sa ‘e’ trebamo kopirati prvo slovo i staviti ga u novi string (u ovom slučaju

string nazvan ‘slovo’). Nakon toga provjeravamo da li je ‘slovo’ = “e” i ako jest prebacivamo ga

u treci niz. To možemo uraditi sa istim brojacem ‘i’ (tj. niz3[i]:=niz1[i];) ,ali ne mora svaki

element niza 1 ispunjavati uslove tj. da mu je prvo slovo ‘e’, pa tako npr. da samo isunjavaju 2. i

5. element, treći niz bi izgledao ovako:

niz3[1] = ‘ ’;

niz3[2] = ‘element’;

niz3[3] = ‘ ’;

niz3[4] = ‘ ’;

niz3[5] = ‘elektricitet’;

Imali bi valoviti treći niz. To nije ‘lijepa’ programerska navika i pri ispisu programa se moze

desiti greska, te se zato ubacuje jos jedan brojač (u ovom slucaju ‘m’).

Page 4: TreciNiz&NoviBrojac

if slovo = 'e' then

begin

m:=m+1;

niz3[m]:=niz1[i];

end;

Kada se ispuni uslov da je prvo slovo ‘e’ if naredbom, ‘m’ se uvećava za jedan. Prije početka

unosa stringova dodjeljena mu je vrijednost 0:

writeln('Unesite clanove prvog niza: ');

m:=0;

Znači kada upišemo prvi string sa slovom “e” m postaje 1, pa poslije se povećava u zavisnosti

kakve stringove unosimo, skaladne uslovu ili ne. Poslije ovoga treci niz bi izgledao ovako:

niz3[1] = ‘element’;

niz3[2] = ‘elektricitet’;

To je isto kao i kod prebacivanja iz 2. u 3. niz, stim da smo prije provjere prvo slovo elemenata 2.

niza morali zamjenuti sa ‘*’. Pa uslov glasi da sve one koji pocinju sa ‘*’ prebacimo u treci niz

(tj. sve cemo prebacit)

if slovo = '*' then

begin

m:=m+1;

niz3[m]:=niz2[i];

end;

Koliko god se ispunjava uslov m raste.

Kada se unos 2. niza završi, m dobije svoju finalnu vrijednost (npr. 8)

Page 5: TreciNiz&NoviBrojac

Kada hoćemo ispisati niz, znamo da 3. niz ima 8 elemenata, pa for petljom namjestimo da ide do

m tj. (ne do 8, jer ne mora uvjek biti 8)

for i:=1 to m do

begin

write(i, '. - ',niz3[i]);

end;

Krećemo od jedinice čiju vrijednost dobija i do broja elemenata trećeg niza m. Broj elemenata

trećeg niza varira pa tako ne možemo uzeti da petlja ide do 8, kao što smo uzeli za primjer. Tako

da ispisujemo sa ‘i’ (write(i, '. - ',niz3[i]);). Tako i ide od 1 do 8 (u ovom slucaju) i

ispisuje treci niz. Primjer ispisa može biti sljedeći:

niz3[1] = ‘element’;

niz3[2] = ‘elektricitet’;

niz3[3] = ‘*ascal’;

niz3[4] = ‘*ole’;

niz3[5] = ‘*rogramiranje’;

niz3[6] = ‘*onj’;

niz3[7] = ‘*lovka’;

niz3[8] = ‘*agarac’;

Zaključak: Bez m niz bi bio valovit, osim u slučaju kad svi elementi

ispunjavaju uslove zadane zadatkom.

Page 6: TreciNiz&NoviBrojac

niz3[1] = ‘ ’; // prazan

niz3[2] = ‘element’;

niz3[3] = ‘ ’; // prazan

niz3[4] = ‘ ’; // prazan

niz3[5] = ‘elektricitet’;

niz3[6] = ‘*ascal’; Ovako niz izgleda bez m

niz3[7] = ‘*ole’;

niz3[8] = ‘*rogramiranje’;

niz3[9] = ‘*onj’;

niz3[10] = ‘*lovka’;

niz3[11] = ‘*agarac’;