otrdiena, 2012. gada 27. novembris

Pascal uzdevumi un to atrisinājumi

1. Pascal uzdevums
Programmā ievadīt teksta failu , veikt tā apstrādi un apstrādes rezultātu izvadīt citā teksta failā. Ja ievades failā divas viena otrai sekojošas rindas ir vienādas, tad izvades failā atstāt tikai vienu rindu 

program Lab1;
uses Wincrt;
var InpFile, OutFile: text;
OutFileName: string;
temp,rinda :string;
const InpFileName='lab1.txt';
begin
  clrscr;
  Assign (InpFile, InpFileName);
  Reset (InpFile);
  writeln ('Ievadi faila nosaukmu!');
  readln (OutFileName);
  Assign (OutFile, OutFileName);
  Rewrite (OutFile); rinda := '';
  writeln('Faila saturs : ');
  while (not EOF (InpFile)) do
  begin readln (InpFile, rinda);
    writeln (rinda);

    if (temp=rinda) then
      continue;
   temp := rinda;
   writeln (outfile,'Apstraadaatais teksts = ''' + rinda + '''');
  end;

close (InpFile);
close (OutFile);
readkey;
end.


2. pascal uzdevums
Galvenajā programmā no TEXT faila ievadīt integer masīvu 20 elementi. Izvadīt ievadīto masīvu uz ekrāna un citā TEXT failā. Atrast masīva divu mazāko elementu summu. Ja summa ir mazāka par 10, sakārtot masīvu augošā secībā. Procedūras darba rezultātu un modificēto masīvu izvadīt uz ekrāna un TEXT failā. Masīva apstrādi veikt ar iekšējo procedūru. Risinājumu veikt ar 3 līmeņu programmu. Paredzēt datu nodošanu caur parametriem un kopējiem (globāliem) mainīgajiem. Datus no faila drīkst ievadīt tikai vienu reizi. Apakšprogrammas nedrīkst saturēt ievada/izvada operatorus.

program Lab2;
uses Wincrt;
const ElSk=20;
InpFileName='lab2.txt';
type MyMas=array[1..ElSk] of integer;
var ms: MyMas; InpFile, {Ievada datu fails} OutFile {rezultatu fails} :TEXT; i, summa2 : integer; ch : char; OutfileName: string;
label TESTING, ENDING;

procedure BUBLE( var a: MyMas);
 var i, j, temp : integer;
 begin for i:=1 to ElSk-1 do
 for j:=i+1 to ElSk do
 if a[i]< a[j] then
 begin temp:= a[i];
 a[i]:=a[j];
 a[j]:=temp;
 end;
 end;

{BUBLE}

 procedure PROCMAS( var a: MyMas; var S2: integer);
 var i : integer;
 function SUM2(A:MyMas):integer;
 var i, sum : integer;
 begin BUBLE(A);
 sum:=0;
 for i:=elsk-1 to elsk do
 sum:=sum+a[i];
 SUM2:=sum;
 end ;
 begin
 S2 := sum2(a);
 if (S2<10) then BUBLE(a);
  end;

begin
  Assign(InpFile, InpFileName );
  Reset(InpFile);
  writeln(' ievadi rezultata faila vaardu');
  readln(OutFileName);
  assign(OutFile, OutFilename);
  rewrite(OutFile);

TESTING: CLRSCR;

  for i:=1 to ElSk do Read(InpFile, ms[i]);
  if EOF(InpFile) then goto ENDING;

  writeln( 'Ievaditie dati');

  for i:=1 to ElSk do begin
      write('         "', i:2,'" ', ms[i]:4, '  ');
      write(Outfile, ms[i]: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');

  for i:=1 to ElSk do begin
      write('         "',i:2,'" ', ms[i]:4, '  ');
      write(Outfile, ms[i]:3);
  end;

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

  if (ch='Y') or (ch='y') then begin
    write(Outfile, Char(13)+Char(10));
    goto TESTING;
  end;

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

end.



Lūk pieejami divi pascal uzdevumi, ja ir vajadzīgi padomi vai palīdzība pascal uzdevumu risināšanā,tad rakstiet. Teorētiski ir pieejami vēl vairāk pascal uzdevumi, ja būs kādam interese varu publicēt.

1 komentārs:

  1. man ir jautājums par otro pascal uzdevumu, kas notiek, ja programma ir jāveido ar 4. līmeņiem? kur tieši kas mainās?

    AtbildētDzēst