| ZER DAKIDAN: Zenbakiak, karaktereak eta kateak lantzeko gai naiz. Halaber, array bat erabiltzeko gai naiz. ZER IKASIKO DUDAN: Array datu-motako zerrenda batean ondoko bi algoritmoak ikasiko ditut:
|
ESKATZEN DEN PROGRAMA (I)
Abiadurak adierazten dituzten zenbaki errealekin lan eginez, 1 eta 10 arteko errealen zerrenda bat lortu nahi da. Zerrendaren elementuak abiadurak dira eta balio errepikatuak onartzen dira.
Programa honek lehenik zenbat abiadura gordeko dituen erabakitzen du, eta gero abiaduren zerrenda osatzen du. Bildutako abiaduren balioak pantailaratu ondoren, rAbiaduraBerria elementu berri bat eta iNon posizio bat eskatuko ditu programak, bi datu horiekin burutzen da elementu berriaren tartekaketa zerrendan (aurreko guztia baldin eta lekurik badago zerrendan). Bukatzean, zerrenda berria pantailaratuko du progranak.
Hauxe da ariketaren programa:
{ 19. ariketa: hainbat abiaduren zerrenda osatu ondoko baldintzekin: }
{ - Abiaduren kopurua zerrendan 1 eta 10 artekoa izango da }
{ - Abiaduren balioak 30.0 Km eta 179.9 Km artekoak izango dira }
{ Abiaduren zerrenda lortu eta elementu berri bat txertatu zerrendan. }
program Ariketa_19_I ;
const
BEHEMUGA = 1 ;
GOIMUGA = 10 ;
type
tarAbiadurenSorta = array[BEHEMUGA..GOIMUGA] of real ;
procedure AbiadurenarrayaBete(var arAbiadurak: tarAbiadurenSorta;
var iLuzera: integer) ;
var
iIndizea: integer ;
begin
Randomize ;
iLuzera := Random(GOIMUGA) + 1 ;
writeln(' Abiaduren zerrendan ', iLuzera, ' datu gordetzen...') ;
writeln(' Aurrera egiteko RETURN sakatu!') ;
readln ;
for iIndizea:=BEHEMUGA to iLuzera do
begin
arAbiadurak[iIndizea] := 30 + 150*Random ; { 30.0 eta 179.9 arteko balioak }
end ;
end ;
procedure AbiadurenarrayaIkusi(const arAbiadurak: tarAbiadurenSorta;
iLuzera: integer) ;
var
iIndizea: integer ;
begin
writeln ;
writeln(' Abiaduren zerrendaren edukia: ') ;
for iIndizea:=BEHEMUGA to iLuzera do
begin
writeln(iIndizea:22, '. abiadura = ', arAbiadurak[iIndizea]:0:3) ;
end ;
writeln ;
end ;
procedure Tartekaketa(var arAbiadurak: tarAbiadurenSorta;
var iLuzera: integer;
rElementua: real;
iNon: integer) ;
var
iIndizea: integer ;
begin
for iIndizea:=iLuzera doWNto iNon do
begin
arAbiadurak[iIndizea+1] := arAbiadurak[iIndizea] ;
end ;
arAbiadurak[iNon] := rElementua ;
iLuzera := iLuzera + 1 ;
end ;
{ ---------------------- PROGRAMA NAGUSIA ---------------------- }
var
arAbiadurak: tarAbiadurenSorta ;
iLuzera, iNon: integer ;
rAbiaduraBerria: real ;
begin
writeln ;
writeln ;
writeln ;
AbiadurenarrayaBete(arAbiadurak, iLuzera) ;
AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ;
if iLuzera < GOIMUGA then
begin
write(' Eman abiadura berriaren balioa (30.0 eta 179.9 artekoa) ') ;
readln(rAbiaduraBerria) ;
repeat
write(' Eman abiadura berriaren posizioa zerrendan: ') ;
readln(iNon) ;
until (iNon >= BEHEMUGA) and (iNon <= iLuzera) ;
Tartekaketa(arAbiadurak, iLuzera, rAbiaduraBerria, iNon) ;
AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ;
end
else
writeln(' Zerrenda beterik dago, ezin da elementu berria txertatu.') ;
readln ;
end.
Programaren balizko exekuzio bat hurrrengo irudian erakusten da:
ESKATZEN DEN PROGRAMA (II)
Abiadurak adierazten dituzten zenbaki errealekin lan eginez, 1 eta 10 arteko errealen zerrenda bat lortu nahi da. Zerrendaren elementuak abiadurak dira eta balio errepikatuak onartzen dira.
Programa honek (aurrekoak bezala) lehenik zenbat abiadura gordeko dituen erabakitzen du, eta gero abiaduren zerrenda osatzen du. Bildutako abiaduren balioak pantailaratu ondoren, zerrendatik kenduko den elementuaren iNon posizioa eskatuko du programak, datu horrekin burutzen da elementuaren ezabaketa zerrendatik. Bukatzean, zerrenda berria pantailaratuko du progranak eta ezabatutako abiadura erakutsiko du ere.
Hauxe da ariketaren programa:
{ 19. ariketa: hainbat abiaduren zerrenda osatu ondoko baldintzekin: }
{ - Abiaduren kopurua zerrendan 1 eta 10 artekoa izango da }
{ - Abiaduren balioak 30.0 Km eta 179.9 Km artekoak izango dira }
{ Abiaduren zerrenda lortu eta elementu jakin bat zerrendatik kendu. }
program Ariketa_19_II ;
const
BEHEMUGA = 1 ;
GOIMUGA = 10 ;
type
tarAbiadurenSorta = array[BEHEMUGA..GOIMUGA] of real ;
procedure AbiadurenarrayaBete(var arAbiadurak: tarAbiadurenSorta;
var iLuzera: integer) ;
var
iIndizea: integer ;
begin
Randomize ;
iLuzera := Random(GOIMUGA) + 1 ;
writeln(' Abiaduren zerrendan ', iLuzera, ' datu gordetzen...') ;
writeln(' Aurrera egiteko RETURN sakatu!') ;
readln ;
for iIndizea:=BEHEMUGA to iLuzera do
begin
arAbiadurak[iIndizea] := 30 + 1530*Random ; { 30.0 eta 179.9 arteko balioak }
end ;
end ;
procedure AbiadurenarrayaIkusi(const arAbiadurak: tarAbiadurenSorta;
iLuzera: integer) ;
var
iIndizea: integer ;
begin
writeln ;
writeln(' Abiaduren zerrendaren edukia: ') ;
for iIndizea:=BEHEMUGA to iLuzera do
begin
writeln(iIndizea:22, '. abiadura = ', arAbiadurak[iIndizea]:0:3) ;
end ;
writeln ;
end ;
procedure Ezabaketa(var arAbiadurak: tarAbiadurenSorta;
var iLuzera: integer;
iNon: integer) ;
var
iIndizea: integer ;
begin
for iIndizea:=iNon to iLuzera-1 do
begin
arAbiadurak[iIndizea] := arAbiadurak[iIndizea+1] ;
end ;
iLuzera := iLuzera - 1 ;
end ;
{ ---------------------- PROGRAMA NAGUSIA ---------------------- }
var
arAbiadurak: tarAbiadurenSorta ;
iLuzera, iNon: integer ;
rElemKopia: real ;
begin
writeln ;
writeln ;
writeln ;
AbiadurenarrayaBete(arAbiadurak, iLuzera) ;
AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ;
repeat
write(' Ezabatuko den abiaduraren posizioa zerrendan: ') ;
readln(iNon) ;
until (iNon >= BEHEMUGA) and (iNon <= iLuzera) ;
rElemKopia := arAbiadurak[iNon] ; { aterako den datuaren kopia egin }
Ezabaketa(arAbiadurak, iLuzera, iNon) ;
AbiadurenarrayaIkusi(arAbiadurak, iLuzera) ;
writeln(' Hona hemen zerrendatik ezabatu den abiadura: ', rElemKopia:0:3) ;
readln ;
end.
Programaren balizko exekuzio bat hurrrengo irudian erakusten da:


iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.