Jump to content

Pascal apakšprogrammas


TinaT
 Share

Recommended Posts

Vai mans risinājums ir veikts ar 2 līmeņu programmu? Un kā to saprast?

Ir gatavs Pascal programmas kods:

 

Program Lab2;

uses CRT;

const ElSk=20; { Elementu skaits masiva}

       InpFileName='Data.txt';

type MyMas=array[1..ElSk] of integer;  {apkalpojama masiva tips}

var ms: MyMas;  {Apkalpojamais masivs}

InpFile,      {Ievada datu fails}

OutFile       {rezultatu fails}

 :TEXT;

 i, summa2 : integer;

 ch : char;   OutfileName: string;

 label TESTING, ENDING;

 

  procedure BUBLE( var a: MyMas) ;forward; { norade uz deklaraciju zemak}

  function SUM2( a:MyMas) :integer;forward;{ iekseja PROCMAS funkcija}

  procedure PROCMAS( var a: MyMas; var S2: integer);forward;

 

  procedure PROCMAS( var a: MyMas; var S2: integer);

  var  i ,j,temp: integer;

  begin              {Sakas ProcMas izpilde }

  S2:=sum2(a);       { Nosakam divu mazako masiva elementu summu }

 

  if (S2<10) then { Vieta, kur vajadzetu kartot augosha seciba}

              for i:=1 to ElSk-1 do

                     for j:=i+1 to ElSk do

                           if a< a[j] then

                                  begin temp:= a;

                                         a:=a[j];

                                         a[j]:=temp;

                                  end;

 

  end; {ProcMas }

 

  procedure BUBLE( var a: MyMas); {masiva a kartosana disltosha secibaa}

  var i, j, temp : integer;

  begin

   for i:=1 to ElSk-1 do

       for j:=i+1 to ElSk do

       if a> a[j] then

              begin temp:= a;

                     a:=a[j];

                     a[j]:=temp;

              end;

 

 

  end; {BUBLE}

 

 function SUM2( A:MyMas) :integer;{ iekseja PROCMAS funkcija}

       { nosaka divu mazako a masiva elementu summu }

       var i, sum : integer;

       begin

       BUBLE(a);  { Kartojam masivu dilstosa seciba}

 

       sum:=0;   {Summejam pirmos divus sakartota masiva elementus}

       for i:=1 to 2  do

       sum:=sum+a;

       SUM2:=sum;

       end;   { SUM2 }

 

 

 

begin

  Assign(InpFile, InpFileName );  { Datu ievada fails }

  Reset(InpFile);

  writeln(' Ievadiet rezultata faila vaardu:');

  readln(OutFileName);

  assign(OutFile, OutFilename);   { Rezultatu fails }

  rewrite(OutFile);

  TESTING: CLRSCR;

  for i:=1 to ElSk do

  Read(InpFile, ms);

  if EOF(InpFile) then goto ENDING;

  writeln( 'Ievaditie dati:');

  writeln(Outfile);

  writeln(Outfile, 'Ievaditie dati:');

  for i:=1 to ElSk do

  begin

  write('         "', i:2,'" ', ms:4, '  ');

  write(Outfile, ms:3);

  end;

   PROCMAS( ms, summa2);

  writeln(Outfile);

  writeln( 'Divu mazako masiva elementu summa ir ', summa2);

  writeln(Outfile, 'Divu mazako masiva elementu summa ir ', summa2);

  writeln('Rezultata masivs:');

  writeln (Outfile, 'Rezultata masivs:');

  for i:=1 to ElSk do

  begin

  write('         "', i:2,'" ', ms:4, '  ');

  write(Outfile, ms:3);

  end;

  writeln(' Ievadi y vai Y lai turpinatu vai ko lai beigtu');

  readln(Ch);

  if (ch='Y') or (ch='y') then goto TESTING;

 ENDING: close(InpFile); close(OutFile);

 end.

 

 

Link to comment
Share on other sites

Ja nemaldos, tad ar otro līmeni RTU pasniedzēji saprata funkciju funkcijā (procedūru procedūrā).

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...