Program nájde minimum v 2D poli a vymení ho s prvým prvkom pola

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: Začátečníci

Autor: Danciwo
Program: 2dpole.pas
Soubor exe: 2dpole.exe

Program nájde minimum v 2D poli a vymení ho s prvým prvkom pola. Program tiež demoštruje prácu s parametrami volanými referenciou.
{ 2DPOLE.PAS                                  Copyright (c) Danciwo }
{ Na vstupe je postupnost N realnych hodnot. Zostavte algoritmus,   }
{ ktory najde miesto, kde sa nachadza minimalna zlozka a vymeni ju  }
{ s prvou zlozkou                                                   }
{                                                                   }
{ Author: Danciwo                                                   }
{ Date  : 15.02.2008                           http://www.trsek.com }
 
program _2dpole;
uses crt;
var cisla: array [1..10, 1..10] of integer;
    a,b,y,x:integer;
 
procedure naplnenie;
          var i,j: integer;
          begin
               randomize;
               for i:=1 to 10 do begin
                   writeln;
                   for j:=1 to 10 do begin
                       cisla[i,j]:= random(98)+1;
                   end;
               end;
          end;
 
procedure hladanie(var x:integer; var y:integer);
          var i,j,min:integer;
          begin
               min:=32001;
               for i:=1 to 10 do begin
                   for j:=1 to 10 do begin
                       if min> cisla[i,j]
                          then begin min:=cisla[i,j];
                                        x:=i;
                                        y:=j;
                                  end;
                   end;
               end;
          end;
 
procedure vymena(var x:integer; var y:integer);
          var i,j,pomocna:integer;
          begin
          	pomocna:=cisla[1,1];
          	cisla[1,1]:=cisla[x,y];
          	cisla[x,y]:=pomocna;
          end;
 
procedure vypis;
	var i,j:integer;
	begin
	for i:=1 to 10 do begin
               	writeln;
               	for j:=1 to 10 do begin
                   write(cisla[i,j]:5);
                   end;
               end;
	end;
 
begin
 clrscr;
 naplnenie;
 vypis;
 a:=0;
 b:=0;
 hladanie(a,b);
 vymena(a,b);
 writeln;
 writeln;
 vypis;
 writeln;
 writeln;
 readln;
end.