ALGO – Algoritmizace 6. cvičení ročník, ZS Ing. Zdena DOBEŠOVÁ, Ph.D.
Příklad 6.1 - rotace doprava Sestavte algoritmus, který posune všechny prvky pole A(N) o jednu pozici doprava pro N=50 do výstupního pole B(N). Pozn. Změna oproti příkladu 5.3, kde se rotovalo v rámci jednoho pole. Vstup: Pole A(N) Výstup: Pole B(N) R U S A K O O R U S A K
Příklad 6.1 - řešení 1.načtení vstupních čísel For I = 1 to I = 50 Step L = 1 Do Vstup A(I) B(I)= „ „ (vynulování pole B(N) ) End For I 2. provedení přesunu For I = 1 to I = 49 Step L = 1 Do ???? B ( ? ) = A(50)
Příklad 6.2 3 1 6 2 Sestavte algoritmus, který sečte všechny prvky posloupnosti A (I) do pole Souc(1), jejichž index je liché číslo sečte všechny prvky posloupnosti A (I) do pole Souc(2), jejichž index je sudé číslo pro posloupnosti délky N Např. A(): Souc (1)= 6 Souc(2)=2 Nechť existuje funkce Modulo, která zjišťuje zbytek po celočíselném dělení. Modulo (14,2) = 0 Modulo (21,2) = 1 Modulo (7,3) = 1 3 1 6 2
Příklad 6.2 1.načtení vstupních čísel For I = 1 to I = N Step L = 1 Do Vstup A(I) End For 2. spočítání součtů Souc(1)=0 (vynulování obou míst pole Souc) Souc(2)=0 IF Modulo(I,2)<>0 Then (je liché) Souc(1)=Souc(1)+A(I) Else Souc(2)=Souc(2)+A(I)(sudé) End If 3.tisk výsledků For I = 1 to I = 2 Step Do Souc(I) End For
Příklad 6.3 Sestavte algoritmus, který zjistí řádkové součty v matici A(N,M). N – řádků M - sloupců Výsledek: pole S(N) {N se musí shodovat s rozměrem matice N !!} Např.: M 1 2 4 5 7 3 12 14 9 N
Příklad 6.3 - řešení 1 2 4 5 7 3 1.načtení vstupních čísel matice For I = 1 to I = N Step L = 1 Do For J = 1 to J = M Step K = 1 Do Vstup A(I, J) End For J End For I 2. spočítání součtů v řádcích vynulování pole S S(I)=0 M 1 2 4 5 7 3 N N
Příklad 6.3 - řešení 1 2 4 5 7 3 12 14 9 2.součty v řádku For I = 1 to I = N Step L = 1 Do For J = 1 to J = M Step K = 1 Do S(I)=S(I)+A(????) End For J End For I 3. tisk pole S tisk S(I) M 1 2 4 5 7 3 12 14 9 N
Příklad 6.4 – samostatné řešení Sestavte algoritmus, který zjistí sloupcové součty v matici A(N,M). N – řádků M - sloupců Výsledek pole S(M) Např.: A (N,M): S(M): Pozn: Můžeme matici A procházet po řádcích nebo po sloupcích – obě řešení jsou možná. 1 2 4 5 7 3 8 4 9 6
Příklad 6.5 Sestavte algoritmus, který zamění libovolné dva řádky R, S v matici A(N,M). N – řádků M - sloupců Použijte pomocné pole Pom (???) Např.: 1. a 3. řádek, tj. R = 1, S = 3 Řešení: Přesun R-tého řádku do pole Pom Přesun S-tého řádku na místo R-tého řádku Přesun z pole Pom do S-tého řádku 5 1 3 7 2 4 1 2 4 5 7 3 Lze řešit jen s jednoduchou pomocnou proměnnou PP místo pole Pom(N)? ANO-NE ?
Příklad 6.4 - řešení 1.načtení …. 2.a) přesun R-tého řádku do pole Pom For I = 1 to I = M Step L = 1 …….. End For I 2.b) Přesun S-tého řádku na místo R-tého řádku 2.c) Přesun z pole Pom do S-tého řádku 3. tisk výsledné matice A (N,M) ……
Př. žárovky www.webpark.cz/22222/hry/zarovky.html rozmyslete části programu – ne řešení, jak všechny zhasnout, ale jak zprogramovat, aby fungovalo Zhasnutí, rozsvícení podle situace „změna v rohu“ „změna na kraji“ „změna uprostřed“