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.

Slides:



Advertisements
Podobné prezentace
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_17 Digitální učební materiál Sada: Úvod do programování.
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Programování funkcí v Excelu (pole)
Programování v Pascalu
Algoritmizace od algoritmu k Pascalu.
Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
ALGO – Algoritmizace 6. cvičení
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 6
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
Algoritmy I Cvičení č. 3.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_15 Digitální učební materiál Sada: Úvod do programování.
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Informatika I 3. přednáška
Jazyk vývojových diagramů
Procedury a funkce Základní charakteristika a použití v programu.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Informatika I 2. přednáška
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_18 Digitální učební materiál Sada: Úvod do programování.
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
Algoritmy a programovací techniky
Jazyk vývojových diagramů
Matice.
Úvod do Pascalu. Co je Pascal? vyšší programovací jazyk poskytuje prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou.
Algoritmizace a programování Třídící algoritmy - 12
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
KIV/PRO Cvičení Částečný součet v posloupnosti Najděte maximální částečný součet v posloupnosti Vstup: – Reálná čísla Výstup: – Maximální.
STROMY Datová struktura sestávající z uzlů
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Aplikační počítačové prostředky X15APP MATLAB Katedra elektroenergetiky, Fakulta elektrotechniky ČVUT, Technická 2, Praha 6 Ing. Zbyněk Brettschneider.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_16 Digitální učební materiál Sada: Úvod do programování.
GYMNÁZIUM, VLAŠIM, TYLOVA
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
doc. RNDr. Zdeněk Botek, CSc.
Pascal – if Mgr. Lenka Švancarová.
4. Typ pole 4.1 Jednorozměrná pole
Pascal – strukturované příkazy
ROOT
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ
VISUAL BASIC PRALG.
doc. RNDr. Zdeněk Botek, CSc.
doc. RNDr. Zdeněk Botek, CSc.
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ CYKLUS S PŘEDEM DANÝM POČTEM OPAKOVÁNÍ – SOUČIN POMOCÍ SOUČTU Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise,
Algoritmy Úkol: Vytvořte algoritmus pro zadání PIN do mobilu.
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Podprogramy.
Juliovy množiny 1.
program TextovySoubor;
Juliovy množiny 1.
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. Upravila R.Baštářová.
Příklady na procedury.
Kinematika hmotný bod: těleso s nekonečně malými rozměry, ale nenulovou hmotností, tj. žádné otáčení, žádná deformace atd. = bodová hmotnost popis pohybu.
Juliovy množiny.
Transkript prezentace:

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 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.

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;

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;

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;

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.

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.

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;

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;

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;

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.

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).

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;

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;

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;

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.

Příklady na funkce

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.

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;

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);

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.

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.

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;

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.

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.

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;

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;

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.

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.

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]);

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.

Příklady na rekurzi

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.

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.

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.

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.

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.

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.

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

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;

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<y then nsd3:=nsd3(x,y-x) if x<y then nsd3:=nsd3(x,y-x) else else if x=y then nsd3:=x; if x=y then nsd3:=x;end;begin writeln('Program pro nalezeni nejvetsiho spolecneho delitele'); writeln('Program pro nalezeni nejvetsiho spolecneho delitele'); writeln('***************************************************'); writeln('***************************************************'); writeln; writeln; write('Zadej dve cisla: '); write('Zadej dve cisla: '); readln(a,b); readln(a,b); {prirazeni pro nsd1} {prirazeni pro nsd1} x:=a; y:=b; x:=a; y:=b; nsd1; nsd1; writeln; writeln; writeln('NSD1(',a,',',b,') = ',x); writeln('NSD1(',a,',',b,') = ',x); writeln; writeln; writeln('NSD2(',a,',',b,') = ',nsd2(a,b)); writeln('NSD2(',a,',',b,') = ',nsd2(a,b)); writeln; writeln; writeln('NSD3(',a,',',b,') = ',nsd3(a,b)); writeln('NSD3(',a,',',b,') = ',nsd3(a,b)); writeln; writeln; writeln('Konec - ENTER'); writeln('Konec - ENTER'); readln; readln;end.

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

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.