Upload
spaceerx
View
216
Download
2
Embed Size (px)
DESCRIPTION
Treci niz zadatak u Pascalu.
Citation preview
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, '. - ');
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’
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’).
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)
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.
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’;