V. a) Jelentsük ki Archimédesz törvényét.
b) Határozzuk meg az erő, fajhő, mágneses fluxus mértékegységét.
c) Írjuk fel az adiabatikus állapotváltozás egyenletét és az elektromágneses erő kifejezését, megadva a fellépő mennyiségek jelentését.
Megoldott feladatok
Informatika
I. 7 5 . Adott egy n*n-es sakktábla és egy (x,y) pozíció a táblán. Határozzuk meg, hogy a sakktábla minden egyes négyzetétől minimálisan hány lóugrással lehet elérni a sakktábla (x,y) pozícióját.
Megoldás:
Program Lovas_Feladat;
Uses Crt;
Type
Matrix=array[1..25,1..25] of integer;
Var
A:Matrix;
n: Integer; { a mátrix mérete}
x, y: Integer; { a pozició, ahonnan keresem a lépések számát}
s:Integer; {számláló}
i,j:Integer; {tömbindexek}
{*********************************}
{Inicilizálom a tömböt, és bekérem}
{ a z (x,y) p o z i c i ó t } Procedure Init (Var U:Matrix);
Var
i,j:Integer;
Begin ClrScr;
Write ('Kérem a mátrix méretet:');
Readln(n);
For i:=1 To N Do For j:=1 To n Do
u[i,j]:=-1;
Repeat
Write ('Kérem a x poziciót:');
Readln(x);
Writeln ('Kérem az y poziciót:');
Readln(y);
until((x In [1..n]) and (y In [1..n]));
u[x,y]:=0;
End;
{ * * * * * * * * * * * * * * * * * * * * * * * * } Function Test:Boolean;
Var Kod:Boolean;
i,j:Integer;
Begin
Kod:=False;
For i:=1 To n Do For j:=1 to n Do
If a[i,j]=-1 then Kod:=True;
Test:=Kod;
End;
1 9 9 6 - 9 7 / 3 123
{ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * } { Eljárás, amely feltölti a } { mátrixot a megfelelő értékekkel } {********************************}
Procedure Lo (x, y: integer);
Begin
If ((x-1) in [1..n]) and ((y-2) in [1..n]) and (a[ x-1,y-2]=-1) then a[x-1,y-2]:=s+1;
If ((x+2) in [1..n]) and ((y-1) in [1..n]) and (a[ x+2,y-1]=-1) then a[x+2,y-1]:=s+1;
If ((x+2) in [1..n]) and ((y+1) in [1..n]) and (a[ x+2,y+1]=-1) then a[x+2,y+l]:=s+1;
If ((x+1) in [1..n]) and ((y+2) in [1..n]) and (a[ x+1,y+2]=-1) then a[x+1,y+2]:=s+1;
If ((x-1) in [1..n]) and ((y+2) in [1..n]) and (a[ x-1,y+2]=-1) then a[x-1,y+2]:=s+1;
If ((x-2) in [1..n]) and ((y+1) in [1..n]) and (a[ x-2,y+1]=-1) then a[x-2,y+1]:=s+1;
If ((x-2) in [1..n]) and ((y-1) in [1..n]) and (a[ x-2,y-1]=-1) then a[x-2,y-1]:=s+1;
If ((x+1) in [1..n]) and ((y-2) in [1..n]) and (a[ x+1,y-2]=-1) then a[x+1,y-2]:=s+1;
End;
{***********************************}
{ Kiirja az e r e d m é n y m á t r i x o t , } { vagyis pontosabban azt hogy az ille- } { tö pozició hány lóugrásra van az }
{ (x,y) poziciótól } { * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * }
Procedure Eredmeny_Kiiras (A: matrix ) ; Var
i,j:Integer;
Begin ClrScr;
For i:=1 To n Do Begin
Writeln;
For j:=1 To n Do Write (a[i,j]:5);
End;
Writeln;
While(s=0) do Begin
Write (s,'lépésre lévő elemek:');
For i:=1 To n Do For j:=1 To n Do
If a[i,j]=s Then Write(' (',i,',',j,')');
Dec(s);
Writeln End;
End;
{ Föprogram } Begin
ClrScr;
Init(A);
S:=0;
While Test do begin For i:=1 To n Do
For j:=1 to n Do
If a[i,j]=s Then Lo(i,j);
Inc(s);
end;
Eredmeny_Kiiras(a);
Repeat Until Keypressed;
End.
Vajda Szilárd egyetemi hallgató
124 1 9 9 6 - 9 7 / 3