2024(e)ko martxoaren 23(a), larunbata

10. astea | hiru array paralelo

Gehienez 20 elementu gordetzeko gai diren arrayekin lan egingo dugu. Arrayen elementuak zenbaki osoak izango dira.


 
{ Luzera logikorik ez da erabiltzen hiru arrayak }
{ beti beterik daudela suposatzen delako.        }
program HiruArray;
uses
   crt;

const
   iBEHEMUGA = 1;
   iGOIMUGA = 20;

type
   taiZenbakiak = array[iBEHEMUGA..iGOIMUGA] of integer;


procedure ArrayakAleatoriokiBete(var aiZenbakiak1: taiZenbakiak;
                                 var aiZenbakiak2: taiZenbakiak);
var
   iKont: integer;
begin
   randomize;
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      aiZenbakiak1[iKont] := random(40) - 20;   { -20 eta 19 arteko balioak }
      aiZenbakiak2[iKont] := random(40) - 20;   { -20 eta 19 arteko balioak }
   end;
   writeln;
end;


procedure ArrayaBete(var aiZenbakiak: taiZenbakiak);
var
   iKont: Integer;
begin
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      write('Eman ', iKont:2, '. zenbakia: ');
      readln(aiZenbakiak[iKont]) ;
   end;
   writeln;
end;


procedure ArrayaIkusi(const aiZenbakiak: taiZenbakiak);
var
   iKont: integer;
begin
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      writeln(iKont:2, '. zenbakia = ', aiZenbakiak[iKont]);
   end;
   writeln;
end;
   
   
procedure ArrayaLortu(const aiX, aiY: taiZenbakiak; 
                             var aiZ: taiZenbakiak);
var
   iKont: integer;
begin
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      if aiX[iKont] > aiY[iKont] then
         aiZ[iKont] := 1;
      if aiX[iKont] = aiY[iKont] then
         aiZ[iKont] := 0;
      if aiX[iKont] < aiY[iKont] then
         aiZ[iKont] := -1;      
   end;
end;


function fniKontatuZenbatPlus(const aiZ: taiZenbakiak): integer;
var
   iKont, iZenbat: integer;
begin
   iZenbat := 0;
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      if aiZ[iKont] = 1 then
         iZenbat := iZenbat + 1;
   end;
   fniKontatuZenbatPlus := iZenbat;
end;


function fniKontatuZenbatMinus(const aiZ: taiZenbakiak): integer;
var
   iKont, iZenbat: integer;
begin
   iZenbat := 0;
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      if aiZ[iKont] = -1 then
      begin
         iZenbat := iZenbat + 1;
      end;   
   end;
   fniKontatuZenbatMinus := iZenbat;
end;


function fniKontatuZenbatZero(const aiZ: taiZenbakiak): integer;
var
   iKont, iZenbat: integer;
begin
   iZenbat := 0;
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      if aiZ[iKont] = 0 then
      begin
         iZenbat := iZenbat + 1;
      end;   
   end;
   fniKontatuZenbatZero := iZenbat;
end;


procedure HiruKontaketakEgin(    const aiZeta: taiZenbakiak;
                              var iZenbatPlus: integer;
                             var iZenbatMinus: integer;
                              var iZenbatZero: integer);
var
   iKont: integer;
begin
   iZenbatPlus := 0;
   iZenbatMinus := 0;
   iZenbatZero := 0;
   for iKont:=iBEHEMUGA to iGOIMUGA do
   begin
      case aiZeta[iKont] of
         1: begin
               iZenbatPlus := iZenbatPlus + 1;
             end;   
        -1: begin
               iZenbatMinus := iZenbatMinus + 1;
             end;  
         0: iZenbatZero := iZenbatZero + 1;
      end;
   end;
end;


{ ------------------------- programa nagusia ------------------------- }
var
   aiX, aiY, aiZ: taiZenbakiak;
   iZenbatPlus, iZenbatMinus, iZenbatZero: integer;
begin
   clrscr;
   writeln('aiX eta aiY arrayen datuak aleatorioki hartuko dira');
   ArrayakAleatoriokiBete(aiX, aiY);
   writeln('aiX arrayaren edukia');
   ArrayaIkusi(aiX);
   writeln('aiY arrayaren edukia');
   ArrayaIkusi(aiY);
   writeln;
   	
   ArrayaLortu(aiX, aiY, aiZ);
   writeln('aiZ arrayaren edukia');
   ArrayaIkusi(aiZ);
   writeln;
   
   iZenbatPlus := fniKontatuZenbatPlus(aiZ);
   iZenbatMinus := fniKontatuZenbatMinus(aiZ);
   iZenbatZero := fniKontatuZenbatZero(aiZ);
   writeln('Hiru funtzioz...');
   writeln('Xi elementuak Yi elementuak baino handiago: ', iZenbatPlus, ' aldiz' );
   writeln('Xi elementuak Yi elementuak baino txikiago: ', iZenbatMinus, ' aldiz' );
   writeln('Xi elementuak eta Yi elementuak berdinak:   ', iZenbatZero, ' aldiz' );
   writeln;
   
   HiruKontaketakEgin(aiZ, iZenbatPlus, iZenbatMinus, iZenbatZero);
   writeln('Prozedura bakarraz...');
   writeln('Xi elementuak Yi elementuak baino handiago: ', iZenbatPlus, ' aldiz' );
   writeln('Xi elementuak Yi elementuak baino txikiago: ', iZenbatMinus, ' aldiz' );
   writeln('Xi elementuak eta Yi elementuak berdinak:   ', iZenbatZero, ' aldiz' );
   
   repeat until keypressed;
end.    { programaren amaiera }
 

iruzkinik ez:

Argitaratu iruzkina

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.