Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Příklady na procedury. Sestavte proceduru pro seřazení posloupnosti reálných čísel do nerostoucí poslopnosti. Použijte ji v programu: Na vstupu je dáno.

Podobné prezentace


Prezentace na téma: "Příklady na procedury. Sestavte proceduru pro seřazení posloupnosti reálných čísel do nerostoucí poslopnosti. Použijte ji v programu: Na vstupu je dáno."— Transkript prezentace:

1 Příklady na procedury

2 Sestavte proceduru pro seřazení posloupnosti reálných čísel do nerostoucí poslopnosti. Použijte ji v programu: Na vstupu je dáno přirozené čislo N z intervalu a dále posloupnost N reálných čísel. Sestavte program, který vytiskne zadanou posloupnost, setříděnou posloupnost (nerostoucí) a setříděnou posloupnost absolutních hodnot zadané posloupnosti.

3

4 program Trideni; {$APPTYPE CONSOLE} type pole=array[1..100] of real; pole=array[1..100] of real; procedure Setrid(n:integer;var a:pole); var i,j:integer; i,j:integer; p:real; p:real;begin for i:=1 to n-1 do for i:=1 to n-1 do for j:=i+1 to n do for j:=i+1 to n do if a[j]>a[i] then begin if a[j]>a[i] then begin p:=a[i];a[i]:=a[j];a[j]:=p; p:=a[i];a[i]:=a[j];a[j]:=p; end; end;end;

5 procedure Tiskni(n:integer;a:pole); var i:integer; i:integer;begin for i:=1 to n do begin for i:=1 to n do begin write(a[i]:8:2); write(a[i]:8:2); if i mod 5 = 0 then writeln; if i mod 5 = 0 then writeln; end; end;end;

6 var i,n:integer; i,n:integer; a,b:pole; a,b:pole; f:text; f:text;begin writeln('Program pro trideni posloupnosti:'); writeln('Program pro trideni posloupnosti:'); writeln('*********************************'); writeln('*********************************'); writeln; writeln; assign(f,'data.txt'); assign(f,'data.txt'); reset(f); reset(f); read(f,n); read(f,n); for i:=1 to n do begin for i:=1 to n do begin read(f,a[i]); read(f,a[i]); b[i]:=abs(a[i]); b[i]:=abs(a[i]); end; end; writeln('Zadana posloupnost: '); writeln('Zadana posloupnost: '); writeln; writeln; Tiskni(n,a); Tiskni(n,a); writeln;writeln; writeln;writeln;

7 writeln('Setridena posloupnost: '); writeln('Setridena posloupnost: '); writeln; writeln; Setrid(n,a); Setrid(n,a); Tiskni(n,a); Tiskni(n,a); writeln;writeln; writeln;writeln; writeln('Setridena posloupnost absolutnich hodnot: '); writeln('Setridena posloupnost absolutnich hodnot: '); writeln; writeln; Setrid(n,b); Setrid(n,b); Tiskni(n,b); Tiskni(n,b); writeln;writeln; writeln;writeln; writeln('Enter-konec'); writeln('Enter-konec'); readln; readln;end.

8 Sestavte proceduru pro vynásobení dvou obdélníkových matic. Použijte ji v programu: Na vstupu je dáno přirozené číslo N z intervalu a dále čtvercová matice reálných čísel A řádu N. Sestavte program, který vytiskne matici A a dále matici A 2 a matici A 3.

9

10 program MocninyMatice; {$APPTYPE CONSOLE} type matice=array[1..20,1..20] of real; matice=array[1..20,1..20] of real; procedure SoucinMatic(m,n,p:integer;a,b:matice; var c:matice); var i,j,k:integer; i,j,k:integer; s:real; s:real;begin for i:=1 to m do for i:=1 to m do for j:=1 to p do begin for j:=1 to p do begin s:=0; s:=0; for k:=1 to n do for k:=1 to n do s:=s+a[i,k]*b[k,j]; s:=s+a[i,k]*b[k,j]; c[i,j]:=s; c[i,j]:=s; end; end;end;

11 procedure TiskMatice(m,n:integer;a:matice); var i,j:integer; i,j:integer;begin for i:=1 to m do begin for i:=1 to m do begin for j:=1 to n do for j:=1 to n do write(a[i,j]:8:2); write(a[i,j]:8:2); writeln; writeln; end; end;end;

12 var i,j,n:integer; i,j,n:integer; a,b,c:matice; a,b,c:matice; f:text; f:text;begin writeln('Program pro tisk mocnin matice:'); writeln('Program pro tisk mocnin matice:'); writeln('*******************************'); writeln('*******************************'); writeln; writeln; assign(f,'data_5_5_02.txt'); assign(f,'data_5_5_02.txt'); reset(f); reset(f); read(f,n); read(f,n); for i:=1 to n do for i:=1 to n do for j:=1 to n do for j:=1 to n do read(f,a[i,j]); read(f,a[i,j]); writeln('Zadana matice: '); writeln('Zadana matice: '); writeln; writeln; TiskMatice(n,n,a); TiskMatice(n,n,a); writeln; writeln;

13 SoucinMatic(n,n,n,a,a,b); SoucinMatic(n,n,n,a,a,b); writeln('Druha mocnina matice: '); writeln('Druha mocnina matice: '); writeln; writeln; TiskMatice(n,n,b); TiskMatice(n,n,b); writeln; writeln; SoucinMatic(n,n,n,b,a,c); SoucinMatic(n,n,n,b,a,c); writeln('Treti mocnina matice: '); writeln('Treti mocnina matice: '); writeln; writeln; TiskMatice(n,n,c); TiskMatice(n,n,c); writeln; writeln; writeln('Enter-konec'); writeln('Enter-konec'); readln; readln;end.

14 Sestavte proceduru pro převod obdélníkové matice reálných čísel typu M, N do posloupnosti o P = M * N členech (po řádcích) a proceduru pro převod opačný - posloupnosti o P = M * N členech na matici typu M, N (po řádcích). Procedury použijte v programu: Na vstupu jsou dána přirozená čísla M, N z intervalu a dále matice typu M, N reálných čísel. Vytiskněte matici typu M, N, která vznikne z původní matice uspořádáním všech prvků matice podle velikosti od největšího po nejmenší - prvky budou setříděny po řádcích (matice se převede na posloupnost, setřídí a převede zpět na matici).

15

16

17 program TrideniMatice; {$APPTYPE CONSOLE} type matice=array[1..30,1..30] of real; matice=array[1..30,1..30] of real; vektor=array[1..900] of real; vektor=array[1..900] of real; procedure preved1(m,n:integer;a:matice;var v:vektor); var i,j,k:integer; i,j,k:integer;begin k:=0; k:=0; for i:=1 to m do for i:=1 to m do for j:=1 to n do begin for j:=1 to n do begin inc(k); inc(k); v[k]:=a[i,j]; v[k]:=a[i,j]; end; end;end;

18 procedure preved2(m,n:integer;v:vektor;var a:matice); var i,j,k:integer; i,j,k:integer;begin k:=0; k:=0; for i:=1 to m do for i:=1 to m do for j:=1 to n do begin for j:=1 to n do begin inc(k); inc(k); a[i,j]:=v[k]; a[i,j]:=v[k]; end; end;end; procedure setrid(p:integer;var v:vektor); var i,j:integer; i,j:integer; x:real; x:real;begin for i:=1 to p-1 do for i:=1 to p-1 do for j:=i+1 to p do for j:=i+1 to p do if v[j]>v[i] then begin if v[j]>v[i] then begin x:=v[i]; v[i]:=v[j]; v[j]:=x; x:=v[i]; v[i]:=v[j]; v[j]:=x; end; end;end;

19 var i,j,m,n:integer; i,j,m,n:integer; a,b:matice; a,b:matice; v:vektor; v:vektor; f:text; f:text;begin writeln('Program pro setrideni prvku matice po radcich'); writeln('Program pro setrideni prvku matice po radcich'); writeln('*********************************************'); writeln('*********************************************'); writeln; writeln; assign(f,'data_5_5_05.txt'); assign(f,'data_5_5_05.txt'); reset(f); reset(f); read(f,m,n); read(f,m,n); for i:=1 to m do for i:=1 to m do for j:=1 to n do for j:=1 to n do read(f,a[i,j]); read(f,a[i,j]); preved1(m,n,a,v); preved1(m,n,a,v); setrid(m*n,v); setrid(m*n,v); preved2(m,n,v,b); preved2(m,n,v,b); writeln('Zadana matice:'); writeln('Zadana matice:'); writeln; writeln; for i:=1 to m do begin for i:=1 to m do begin for j:=1 to n do for j:=1 to n do write(a[i,j]:12:2); write(a[i,j]:12:2); writeln; writeln; end; end;

20 writeln; writeln('Setridena matice:'); writeln('Setridena matice:'); writeln; writeln; for i:=1 to m do begin for i:=1 to m do begin for j:=1 to n do for j:=1 to n do write(b[i,j]:12:2); write(b[i,j]:12:2); writeln; writeln; end; end; writeln; writeln; writeln('Konec-enter'); writeln('Konec-enter'); readln; readln;end.

21 Příklady na funkce

22 Sestavte funkci pro nalezení maximální hodnoty v posloupnosti n reálných čísel a použijte ji v programu: Na vstupu je dáno přirozené číslo n z intervalu a dále posloupnost n nenulových reálných čísel. Sestavte program pro nalezení maximální hodnoty dané posloupnosti a dále maximální hodnoty z posloupnosti absolutních hodnot a z posloupnosti převrácených hodnot původní posloupnosti.

23

24 program MaximumPosloupnosti; {$APPTYPE CONSOLE} type pole=array[ ] of real; pole=array[ ] of real; function Maximum(n:integer;a:pole):real; var i:integer; i:integer; max:real; max:real;begin max:=-1e30; max:=-1e30; for i:=1 to n do for i:=1 to n do if a[i]>max then max:=a[i]; if a[i]>max then max:=a[i]; result:=max; result:=max;end; procedure TiskniPosloupnost(n:integer;a:pole); var i:integer; i:integer;begin for i:=1 to n do begin for i:=1 to n do begin write(a[i]:10:4); write(a[i]:10:4); if i mod 5 = 0 then writeln if i mod 5 = 0 then writeln end; end; if n mod 5 <> 0 then writeln; if n mod 5 <> 0 then writeln;end;

25 var i,n:integer; i,n:integer; a,b,c:pole; a,b,c:pole; f:text; f:text;begin writeln('Program pro nalezeni maxima posloupnosti'); writeln('Program pro nalezeni maxima posloupnosti'); writeln('****************************************'); writeln('****************************************'); writeln; writeln; assign(f,'data_5_6_02.txt');reset(f); assign(f,'data_5_6_02.txt');reset(f); read(f,n); read(f,n); for i:=1 to n do for i:=1 to n do read(f,a[i]); read(f,a[i]); writeln('Zadana posloupnost:'); writeln('Zadana posloupnost:'); TiskniPosloupnost(n,a); TiskniPosloupnost(n,a); writeln('Maximum = ',Maximum(n,a):8:2); writeln('Maximum = ',Maximum(n,a):8:2); writeln; writeln; for i:=1 to n do for i:=1 to n do b[i]:=abs(a[i]); b[i]:=abs(a[i]); writeln('Posloupnost absolutnich hodnot:'); writeln('Posloupnost absolutnich hodnot:'); TiskniPosloupnost(n,b); TiskniPosloupnost(n,b); writeln('Maximum = ',Maximum(n,b):8:2); writeln('Maximum = ',Maximum(n,b):8:2);

26 writeln; for i:=1 to n do for i:=1 to n do c[i]:=1/a[i]; c[i]:=1/a[i]; writeln('Posloupnost prevracenych hodnot:'); writeln('Posloupnost prevracenych hodnot:'); TiskniPosloupnost(n,c); TiskniPosloupnost(n,c); writeln('Maximum = ',Maximum(n,c):8:4); writeln('Maximum = ',Maximum(n,c):8:4); writeln; writeln; writeln('Konec-enter'); writeln('Konec-enter'); readln; readln;end.

27 Sestavte funkci pro výpočet vzdálenosti dvou bodů v prostoru. Funkci použijte v programu: Vstupní textový soubor obsahuje na každém řádku trojici reálných čísel - souřadnic bodů v prostoru. Řádků je maximálně Najděte maximální vzdálenost mezi body a dvojici bodů v této maximální vzdálenosti.

28

29 program MaximalneVzdaleneBody; {$APPTYPE CONSOLE} function vzd(x1,y1,z1,x2,y2,z2:real):real; begin result:=sqrt(sqr(x2-x1)+sqr(y2-y1)+sqr(z2-z1)); result:=sqrt(sqr(x2-x1)+sqr(y2-y1)+sqr(z2-z1));end;var i,j,n,imax1,imax2:integer; i,j,n,imax1,imax2:integer; x,y,z:array[ ] of real; x,y,z:array[ ] of real; max,v:real; max,v:real; f:text; f:text;begin assign(f,'data_5_6_05.txt');reset(f); assign(f,'data_5_6_05.txt');reset(f); n:=0; n:=0; while not eof(f) do begin while not eof(f) do begin inc(n); inc(n); readln(f,x[n],y[n],z[n]); readln(f,x[n],y[n],z[n]); end; end; writeln('Program pro nalezeni maximalne vzdalenych bodu'); writeln('Program pro nalezeni maximalne vzdalenych bodu'); writeln('**********************************************'); writeln('**********************************************'); writeln; writeln; writeln('Zadane body:'); writeln('Zadane body:'); for i:=1 to n do for i:=1 to n do writeln(i:3,x[i]:6:2,y[i]:6:2,z[i]:6:2); writeln(i:3,x[i]:6:2,y[i]:6:2,z[i]:6:2); writeln; writeln;

30 max:=-1e30; max:=-1e30; for i:=1 to n-1 do for i:=1 to n-1 do for j:=i+1 to n do begin for j:=i+1 to n do begin v:=vzd(x[i],y[i],z[i],x[j],y[j],z[j]); v:=vzd(x[i],y[i],z[i],x[j],y[j],z[j]); if v>max then begin if v>max then begin max:=v; max:=v; imax1:=i;imax2:=j; imax1:=i;imax2:=j; end; end; writeln('Maximalni vzdalenost: ',max:8:3); writeln('Maximalni vzdalenost: ',max:8:3); writeln(' i x y z'); writeln(' i x y z'); writeln(imax1:4,x[imax1]:6:2,y[imax1]:6:2,z[imax1]:6:2); writeln(imax1:4,x[imax1]:6:2,y[imax1]:6:2,z[imax1]:6:2); writeln(imax2:4,x[imax2]:6:2,y[imax2]:6:2,z[imax2]:6:2); writeln(imax2:4,x[imax2]:6:2,y[imax2]:6:2,z[imax2]:6:2); writeln; writeln; writeln('Enter-konec'); writeln('Enter-konec'); readln; readln;end.

31 Sestavte funkci pro výpočet hodnoty daného polynomu v daném bodě. Funkci použijte v programu, který vytiskne tabulku hodnot polynomu na zadaném intervalu se zadaným krokem.

32

33 program TabelacePolynomu; {$APPTYPE CONSOLE} type tpoly=array[0..100] of real; tpoly=array[0..100] of real; function poly(n:integer;a:tpoly;x:real):real; var i:integer; i:integer; s:real; s:real;begin s:=a[n]; s:=a[n]; for i:=n-1 downto 0 do for i:=n-1 downto 0 do s:=s*x+a[i]; s:=s*x+a[i]; result:=s; result:=s;end;

34 const radek='***************************************'; radek='***************************************';var DolniMez,HorniMez,Krok,x,y1,y2:real; DolniMez,HorniMez,Krok,x,y1,y2:real; i,n:integer; i,n:integer; a:tpoly; a:tpoly; f:text; f:text;begin assign(f,'data_5_6_04.txt');reset(f); assign(f,'data_5_6_04.txt');reset(f); read(f,n); read(f,n); for i:=n downto 0 do for i:=n downto 0 do read(f,a[i]); read(f,a[i]); read(f,DolniMez,HorniMez,Krok); read(f,DolniMez,HorniMez,Krok); writeln('Program pro tabelaci hodnot polynomu'); writeln('Program pro tabelaci hodnot polynomu'); writeln('************************************'); writeln('************************************'); writeln; writeln; writeln('Stupen polynomu: ',n); writeln('Stupen polynomu: ',n); writeln('Koeficienty polynomu:'); writeln('Koeficienty polynomu:'); for i:=n downto 0 do for i:=n downto 0 do write(a[i]:6:2); write(a[i]:6:2); writeln; writeln; writeln('Zadana dolni mez: ',DolniMez:6:2,' horni mez: writeln('Zadana dolni mez: ',DolniMez:6:2,' horni mez: ',HorniMez:6:2,' krok: ',Krok:6:2); ',HorniMez:6:2,' krok: ',Krok:6:2); writeln; writeln;

35 writeln(radek); writeln('* x * hodnota polynomu *'); writeln('* x * hodnota polynomu *'); writeln(radek); writeln(radek); x:=DolniMez;i:=0; x:=DolniMez;i:=0; while x<=HorniMez do begin while x<=HorniMez do begin writeln('*',x:13:3,' *',poly(n,a,x):17:3,' *'); writeln('*',x:13:3,' *',poly(n,a,x):17:3,' *'); inc(i); inc(i); if i mod 5 = 0 then writeln(radek); if i mod 5 = 0 then writeln(radek); x:=x+Krok; x:=x+Krok; end; end; if i mod 5 <> 0 then writeln(radek); if i mod 5 <> 0 then writeln(radek); writeln; writeln; writeln('Enter-konec'); writeln('Enter-konec'); readln; readln;end.

36 Sestavte funkci pro výpočet největšího společného dělitele dvou přirozených čísel a použijte ji v programu pro nalezení největšího společného dělitele zadané n-členné posloupnosti přirozených čísel.

37

38 program NSDzNCisel; {$APPTYPE CONSOLE} function nsd(x,y:integer):integer; begin while x<>y do while x<>y do if x>y then x:=x-y if x>y then x:=x-y else y:=y-x; else y:=y-x; nsd:=x; nsd:=x;end;var i,n,x,y:integer; i,n,x,y:integer; a:array[1..100] of integer; a:array[1..100] of integer; f:text; f:text;begin writeln('Program pro nalezeni NSD n cisel'); writeln('Program pro nalezeni NSD n cisel'); writeln('********************************'); writeln('********************************'); writeln; writeln; assign(f,'data_5_6_06.txt'); assign(f,'data_5_6_06.txt'); reset(f); reset(f); read(f,n); read(f,n); for i:=1 to n do for i:=1 to n do read(f,a[i]); read(f,a[i]);

39 writeln('Zadana cisla: '); writeln('Zadana cisla: '); writeln; writeln; for i:=1 to n do begin for i:=1 to n do begin write(a[i]:8); write(a[i]:8); if i mod 5 = 0 then writeln; if i mod 5 = 0 then writeln; end; end; x:=a[1]; x:=a[1]; for i:=2 to n do begin for i:=2 to n do begin y:=a[i]; y:=a[i]; x:=nsd(x,y); x:=nsd(x,y); end; end; writeln;writeln; writeln;writeln; writeln('NSD z n cisel = ',x); writeln('NSD z n cisel = ',x); writeln;writeln; writeln;writeln; writeln('Konec - Enter'); writeln('Konec - Enter'); readln; readln;end.

40 Příklady na rekurzi

41 Sestavte rekurzivní funkci pro výpočet přirozené mocniny x n a použijte ji v programu pro výpočet x n pro zadané reálné číslo x a přirozené číslo n.

42 program PrirozenaMocnina; {$APPTYPE CONSOLE} function Mocnina (x:real;n:integer):real; begin if n=0 then Mocnina := 1 if n=0 then Mocnina := 1 else Mocnina := x * Mocnina(x, n - 1) else Mocnina := x * Mocnina(x, n - 1)end;var x:real; x:real; n:integer; n:integer;begin writeln('Program pro vypocet prirozene mocniny cisla'); writeln('Program pro vypocet prirozene mocniny cisla'); writeln('*******************************************'); writeln('*******************************************'); writeln; writeln; write('Zadej cislo x: '); write('Zadej cislo x: '); readln(x); readln(x); writeln; writeln; write('Zadej cislo n: '); write('Zadej cislo n: '); readln(n); readln(n); writeln; writeln; writeln('x^n = ',Mocnina(x,n):10:4); writeln('x^n = ',Mocnina(x,n):10:4); writeln; writeln; writeln('Konec-enter'); writeln('Konec-enter'); readln; readln;end.

43 Sestavte rekurzivní funkci pro výpočet n-tého členu rekurentně definované posloupnosti: a 1 = 3, a n+1 = 3*a n - 2. Funkci použijte v programu pro výpočet n-tého členu posloupnosti pro zadané n.

44 program ClenPosloupnosti; {$APPTYPE CONSOLE} function Clen(n:integer):integer; begin if n=1 then Clen := 3 if n=1 then Clen := 3 else Clen:= 3*Clen(n-1)-2; else Clen:= 3*Clen(n-1)-2;end;var n:longint; n:longint;begin writeln('Program pro vypocet n-teho clenu posloupnosti'); writeln('Program pro vypocet n-teho clenu posloupnosti'); writeln('*********************************************'); writeln('*********************************************'); writeln; writeln; write('Zadej cislo n: '); write('Zadej cislo n: '); readln(n); readln(n); writeln; writeln; writeln('n-ty clen = ',Clen(n)); writeln('n-ty clen = ',Clen(n)); writeln; writeln; writeln('Konec-enter'); writeln('Konec-enter'); readln; readln;end.

45 Sestavte rekurzivní funkci pro výpočet součtu cifer přirizeného čísla a použijte ji v programu pro výpočet součtu cifer zadaného přirozeného čísla.

46 program CifernySoucet; {$APPTYPE CONSOLE} function CifSou(n:longint):longint; begin if n<10 then CifSou := n if n<10 then CifSou := n else CifSou := n mod 10 + CifSou(n div 10) else CifSou := n mod 10 + CifSou(n div 10)end;var n:longint; n:longint;begin writeln('Program pro vypocet souctu cifer cisla'); writeln('Program pro vypocet souctu cifer cisla'); writeln('**************************************'); writeln('**************************************'); writeln; writeln; write('Zadej cislo n: '); write('Zadej cislo n: '); readln(n); readln(n); writeln; writeln; writeln('Ciferny soucet = ',CifSou(n)); writeln('Ciferny soucet = ',CifSou(n)); writeln; writeln; writeln('Konec-enter'); writeln('Konec-enter'); readln; readln;end.

47 Sestavte rekurzivní proceduru pro výpočet největšího společného dělitele dvou čísel.

48

49 program RekurzivniEukleiduvAlgoritmus; // Eukleiduv algoritmus pro nalezení nejvetšího spolecného dělitele dvou // přirozených čísel pomocí rekurze. {$APPTYPE CONSOLE} var x,y,a,b,p:integer; x,y,a,b,p:integer; procedure nsd1; begin if y<>0 then begin if y<>0 then begin p:=y;y:=x mod y;x:=p; p:=y;y:=x mod y;x:=p; nsd1; nsd1; end; end;end; function nsd2(x,y:integer):integer; var p:integer; begin if y<>0 then begin if y<>0 then begin nsd2:=nsd2(y,x mod y); nsd2:=nsd2(y,x mod y); end end else nsd2:=x; else nsd2:=x;end;

50 function nsd3(x,y:integer):integer; var p:integer; begin if x>y then nsd3:=nsd3(x-y,y) if x>y then nsd3:=nsd3(x-y,y) else else if x

51 Sestavte rekurzivní proceduru pro převod čísla do dvojkové soustavy.

52 program DvojkovaSoustava; {$APPTYPE CONSOLE} procedure Bin(n:longint); begin if n<>0 then begin if n<>0 then begin Bin(n div 2); Bin(n div 2); write(n mod 2); write(n mod 2); end; end;end;var x:longint; x:longint;begin writeln('Program pro prevod cisla do dvojkove soustavy'); writeln('Program pro prevod cisla do dvojkove soustavy'); writeln('*********************************************'); writeln('*********************************************'); writeln; writeln; write('Zadej cislo: '); write('Zadej cislo: '); readln(x); readln(x); writeln; writeln; bin(x); bin(x); writeln; writeln; writeln('Konec-enter'); writeln('Konec-enter'); readln; readln;end.


Stáhnout ppt "Příklady na procedury. Sestavte proceduru pro seřazení posloupnosti reálných čísel do nerostoucí poslopnosti. Použijte ji v programu: Na vstupu je dáno."

Podobné prezentace


Reklamy Google