You are on page 1of 13

Algoritmizace: TESTY

Priklad 1: Priklad 2: Co se vypise? Priklad 3:


Navrhnete algoritmus a +---------------------+ Navrhnete algoritmus
nakreslete strukturogram | kk = 3 | pro obleceni kabatu;
pro vypis tohoto obrazce +-+-------------------+ nakreslete prislusny
| | jj = kk + 6 | strukturogram.
L = = = = = = | +-------------------+
= L = = = = = | | vypis: JEZEK |
= = L = = = = | +-------------------+
= = = L = = = | | kk = kk + 1 |
= = = = L = = | +-------------------+
| jj < 14 |
+---------------------+

Priklad 4: Co se vypise? Priklad 5:


+-----------------------+ misto otazniku doplnte meze
| for(J=2;J<5;J=J+1) |
| +---------------------+
| | for(K=1;K<4;K++) | +---------------------+
| | +-------------------+ | for ii = 2 to ? |
| | | vypis: E | | +-------------------+
| +-+-------------------+ o o o o o o o o | | for jj = 3 to ? |
| | for(K=2;K<7-J;K++) | o o o o o o o o | | +-----------------+
| | +-------------------+ o o o o o o o o | | | |
| | | vypis: o | o o o o o o o o | | | vypis "o" |
| +-+-------------------+ o o o o o o o o | | | |
| | nova_radka() | o o o o o o o o | +-+-----------------+
+-+---------------------+ | | nova_radka() |
+-+-------------------+

Řešení
Priklad 1:
+---------------------+
| FOR ii = 1 to 5 |
| +-------------------+
| | FOR jj = 1 to 7 |
| | +-----------------+
| | | ii == jj ? |
| | |ne | ano|
| | +--------+--------+
| | | vypis | vypis |
| | | "=" | "L" |
| +-+--------+--------+
| | nova_radka() |
+-+-------------------+

Priklad 2: 6x JEZEK
Priklad 3: (jedno z moznych reseni)
+---------------------------------+
| podminky oblekani splneny ? |
| (cisty kabat na vesaku, ...) |
|ano |ne|
+------------------------------+--+
| sejmi kabat z vesaku | |
+------------------------------+ |
| zvedni kabat limcem vzhuru | |
+------------------------------+ |
| FOR ruka = LEVA, PRAVA | |
| +----------------------------+ |
| | zasun zevnitr ruku do | |
| | prislusneho rukavu | |
+-+----------------------------+ |
| kabat na sobe uprav | |
+------------------------------+ |
| je chladno ? | |
|ano |ne| |
+---------------------------+--+ |
| zbyva nezapnuty knoflik ? | | |
| +-------------------------+ | |
| | zapni nezapnuty knoflik | | |
+-+-------------------------+ | |
| zkontroluj vysledek a | | |
| oprav pripadne nedostatky | | |
+---------------------------+--+--+

Priklad 4: EEEooo
EEEoo
EEEo

Priklad 5: 7, 10.

Priklad 1: Priklad 2: Co se vypise? Priklad 3:


Navrhnete algoritmus a +---------------------+ Navrhnete algoritmus
nakreslete strukturogram | kk = 4 | pro ukladani hrusek z
pro vypis tohoto obrazce +-+-------------------+ hromady do beden a
| | jj = kk + 6 | nakreslete prislusny
x x x x x O x | +-------------------+ strukturogram.
x x x x O x x | | vypis: GORILA |
x x x O x x x | +-------------------+
x x O x x x x | | kk = kk + 1 |
x O x x x x x | +-------------------+
O x x x x x x | jj < 13 |
+---------------------+

Priklad 4: Co se vypise? Priklad 5:


+-----------------------+ Misto otazniku doplnte meze a do mista P
| for(J=1;J<5;J=J+1) | doplnte chybejici cast strukturogramu
| +---------------------+
| | for(K=1;K<1+J;K++) | +---------------------+
| | +-------------------+ | for ii = 1 to ? |
| | | vypis: A | | +-------------------+
| +-+-------------------+ o x o o o o o | | for jj = 1 to ? |
| | for(K=1;K<6-J;K++) | o o x o o o o | | +-----------------+
| | +-------------------+ o o o x o o o | | | |
| | | vypis: B | o o o o x o o | | | P |
| +-+-------------------+ o o o o o x o | | | |
| | nova_radka() | o o o o o o x | +-+-----------------+
+-+---------------------+ | | nova_radka() |
+-+-------------------+
Řešení
Priklad 1:
+---------------------+
| FOR ii = 1 to 6 |
| +-------------------+
| | FOR jj = 1 to 7 |
| | +-----------------+
| | | ii == 7-jj ? |
| | |ne | ano|
| | +--------+--------+
| | | vypis | vypis |
| | | "x" | "O" |
| +-+--------+--------+
| | nova_radka() |
+-+-------------------+

Priklad 2: 4x GORILA

Priklad 3: (jedno z moznych reseni)


+---------------------------------+
| podminky skladovani splneny ? |
| (prazdne bedny, hrusky, ...) |
|ano |ne|
+------------------------------+--+
| priprav bednu, dej hrusky na | |
| hromadu... | |
+------------------------------+ |
| dokud je hruska na hromade | |
| a je volne misto v bedne | |
| +----------------------------+ |
| | vezmi hrusku | |
| +----------------------------+ |
| | dobra ? | |
| |ano ne| |
| +----------------+-----------+ |
| | uloz do bedny | vyhod ji | |
| +----------------+-----------+ |
| | je misto v bedne ? | |
| |ano| ne| |
| +---+------------------------+ |
| | | uloz plnou bednu | |
| | +------------------------+ |
| | | zbyva prazdna bedna ? | |
| | |ano ne| |
| | +--------------------+---+ |
| | | priprav bednu | | |
+-+---+--------------------+---+ |
| zbyva neodbavena hruska ? | |
|ano | ne| |
+--------+---------------------+ |
| | uklid prazdne bedny | |
| +---------------------+ |
| | zbyla neuklizena | |
| | bedna ? | |
| |ano ne| |
| +----------+----------+ |
| |uklid mezi| | |
| | plne | | |
+--------+----------+----------+ |
| nezdar |povedlo se|povedlo se| |
+--------+----------+----------+ |
| dosly | jedna | vsecko | |
| bedny | bedna | vyslo | |
| | neni | akorat | |
| | plna | | |
+--------+----------+----------+--+

Priklad 4: ABBBB
AABBB
AAABB
AAAAB

Priklad 5: 6, 7,

+-----------------+
| jj == ii+1 ? |
|ano | ne|
+--------+--------+
| vypis | vypis |
| "x" | "o" |
+--------+--------+

//
// priklad E3. (2 body)
//
// Co se vypise na konci programu
//
// #include <stdio.h>
// int main()
// { int ii,jj,*pp;
// pp = &ii;
// ii = 1;
// jj = *pp;
// *pp = 2;
// printf("hodnota ii=%d, hodnota jj=%d\r\n",ii,jj);
// return(1);
// }
//
// -----------------------------------------------
//
Řešení
//
// reseni E3.
//
// hodnota ii=2, hodnota jj=1
//
// -----------------------------------------------
//

//
// priklad E9. (3 body)
//
// Co se vypise na konci programu
// Schematicky znazornete stav promennych na konci programu
//
// #include <stdio.h>
// int main()
// { int ii,jj,kk, *pp,*qq, **ww;
// pp = &ii;
// qq = &jj;
// ww = &pp;
// ii = 1;
// jj = 2;
// kk = *pp+*qq+**ww;
// ww = &qq;
// **ww= jj+kk;
// printf("hodnota ii=%d, hodnota jj=%d, hodnota kk=%d\r\n",ii,jj,kk);
// return(1);
// }
//
// -----------------------------------------------
//
Řešení

//
// reseni E9.
//
// hodnota ii=1, hodnota jj=6, hodnota kk=4
//
// -----------------------------------------------
//
// +-----------+
// ii | 1 |
// +-----> +-----------+
// | +-----------+
// | jj | 6 |
// | +--> +-----------+
// | | +-----------+
// | | kk | 4 |
// | | +-----------+
// | |
// | |
// | | +-----------+
// +--|---- pp | adresa ii |
// | +-----------+
// | +-----------+
// +---- qq | adresa jj |
// +--> +-----------+
// |
// |
// | +-----------+
// +---- ww | adresa qq | (tj. adresa mista, kde je prave
// +-----------+ ulozena adresa promenne jj)
//
// -----------------------------------------------
//

//
// priklad E4. (2 body)
//
// a/ jak bude vypadat vypis na konci programu
// b/ bude v obou pripadech stejny vysledek? (rozdil na 4.radce)
//
// +-----------------------+ +-----------------------+
// 1 | FOR ii=1 TO 6 | | FOR ii=1 TO 6 |
// | +---------------------+ | +---------------------+
// 2 | | FOR kk=1 TO ii | | | FOR kk=1 TO ii |
// | | +-------------------+ | | +-------------------+
// 3 | | | vypis "Y" | | | | vypis "Y" |
// | +-+-------------------+ | +-+-------------------+
// 4 | | FOR jj=1 TO (6-ii) | | | FOR kk=1 TO (6-ii) |
// | | +-------------------+ | | +-------------------+
// 5 | | | vypis "N" | | | | vypis "N" |
// | +-+-------------------+ | +-+-------------------+
// 6 | | dalsi radek | | | dalsi radek |
// +-+---------------------+ +-+---------------------+
//
// -----------------------------------------------
//
Řešení

//
// reseni E4.
//
// a/ Ynnnnn
// YYnnnn
// YYYnnn
// YYYYnn
// YYYYYn
// YYYYYY
//
// b/ ano, cykly jsou za sebou, nova inicializace
// kk na zacatku druheho cyklu prvnimu nevadi
// -----------------------------------------------
//

//
// priklad E7. (2 body)
//
// popiste cinnost podprogramu ZMYDLI a urcete,
// co bude vypsano po spusteni hlavniho programu,
// jestlize zdroj, odkud jsou cteny hodnoty ZNAK,
// obsahuje: HOJA*HOJA*TAK*CO*TO*BUDE*
//
//
// hlavni program MAIN
// +-----------------------+
// | call ZMYDLI |
// +-----------------------+
//
// podprogram ZMYDLI
// +-----------------------+
// | ziskej ZNAK |
// +-----------------------+
// | ZNAK = "*" ? |
// +-----------------------+
// | + | - |
// +-----------+-----------+
// | ziskej | call |
// | ZNAK | ZMYDLI |
// +-----------+-----------+
// | zobraz ZNAK |
// +-----------------------+
//
// -----------------------------------------------
//

Řešení

//
// reseni E7.
//
// HAJOH
//
// -----------------------------------------------
//

//
// priklad G7. (2 body)
//
// popiste cinnost podprogramu NADOVOLENOU a urcete,
// co bude vypsano po spusteni hlavniho programu,
// jestlize zdroj, odkud jsou cteny hodnoty ZNAK,
// obsahuje: ANIAUTOSTOPEM
//
//
// hlavni program MAIN
// +-----------------------+
// | call NADOVOLENOU |
// +-----------------------+
//
// podprogram NADOVOLENOU
// +-----------------------+
// | ziskej ZNAK |
// +-----------------------+
// | ZNAK = samohlaska ? |
// +-----------------------+
// | + | - |
// +-----------+-----------+
// | ziskej | |
// | ZNAK | |
// +-----------+ |
// | call | |
// |NADOVOLENOU| |
// +-----------+ |
// |zobraz ZNAK| |
// +-----------+-----------+
//
// -----------------------------------------------
//

Řešení

//
// reseni G7.
//
// STAN
//
// -----------------------------------------------
//

//
// priklad I9. (1 bod)
//
// Jakou dekadickou hodnotu ma cislo 235, jedna-li se o zapis
// v 6-kove soustave ?
//
// -----------------------------------------------
//
Řešení

//
// reseni H9.
//
// 95 ... (= 2*6^2 + 3*6^1 + 5*6^0 = 72+18+5 =95)
//
// -----------------------------------------------
/
Priklad 1: Priklad 2: Co se vypise? Priklad 3:
Navrhnete algoritmus a +---------------------+ Jake bude ii, jj, *pp
nakreslete strukturogram | AA = TRUE | a *qq po provedeni:
pro vypis tohoto obrazce +---------------------+ int main(void)
| while AA == TRUE | { int ii,jj, *pp,*qq;
A * * * * * * | +-------------------+ ii = 9;
* A * * * * * | | AA = NOT AA | jj = 14
* * A * * * * | +-------------------+ pp = &ii;
A A A A A A A | | vypis: KONIK | qq = &jj;
* * * * A * * | +-------------------+ *pp = ii + 1;
* * * * * A * | | BB = NOT AA | *qq = *qq + 6;
* * * * * * A +-+-------------------+ pp = qq;
* * * * * * * *qq = *pp + jj;

Priklad 4: Co se vypise? Priklad 5:


+-----------------------+ Stanovte prikaz / prikazy, ktere je nutno
| for I = 1 to 6 | doplnit do mista P, aby vznikl pozadovany
| +---------------------+ vypis. Prikazy smite vkladat jen do mista
| | for J = 1 to I | P, nikam jinam! +---------------------+
| | +-------------------+ | for ii = 1 to 7 |
| | | vypis: O | + k + + + + k + | +-------------------+
| +-+-------------------+ + k + + + k + + | | for jj = 1 to 8 |
| | for J = 1 to (8-I) | + k + + k + + + | | +-----------------+
| | +-------------------+ + k + k + + + + | | | |
| | | vypis: A | + k k + + + + + | | | P |
| +-+-------------------+ + k + + + + + + | | | |
| | nova_radka() | k k + + + + + + | +-+-----------------+
+-+---------------------+ | | nova_radka() |
+-+-------------------+

Priklad 6: Priklad 7:
Nakreslete graf funkce Jaky bude vypis na konci MAIN ?
F(x) dane strukturogramem Funkci podprogramu vysvetlete !
+-----------------------+
| x = -1 ? | hlavni program MAIN
+-----------------------+ +-----------------------------+
| + | - | | call FELIX |
+-------+---------------+ +-----------------------------+
| | x <= 0 ? | podprogram FELIX
| +---------------+ +-----------------------------+
| | + | - | | XX = ctiznak() |
| +-------+-------+ +-----------------------------+
| F=-1 | F=-1 | F=2*x | | XX == '*' ? |
+-------+-------+-------+ +-----------------------------+
| + | - |
+--------------+--------------+
Priklad 8: Co se vypise? | | XX=ctiznak() |
+-----------------------+ +--------------+--------------+
| kk = 1 | | XX=ctiznak() | call FELIX |
+-----------------------+ +--------------+--------------+
| mm = 1 | | vypisznak(XX); |
+-----------------------+ +-----------------------------+
| kk <= 24 | nacitane znaky: RSTUV*WXYZ*1234
| +-+-------------------+
| | | mm = mm + 2 | Priklad 9: Delaji programy totez? Vysvetlete!
| | +-------------------+ +---------------------+ +---------------------+
| | | vypis: ADOLF | | ii = 1 | | kk = 1 |
| | +-------------------+ +---------------------+ +---------------------+
| | | kk = kk + 2 | | ii < 3 | | kk < 3 |
| | +-------------------+ | +-------------------+ | +-------------------+
| | mm < 14 | | | A[ii] = ctiznak() | | | kk = kk + 1 |
| +---------------------+ | +-------------------+ | +-------------------+
| | vypis: LENKA | | | ii = ii + 1 | | | A[kk] = ctiznak() |
+-+---------------------+ +-+-------------------+ +-+-------------------+
Řešení
Priklad 1: Priklad 2: Co se vypise? Priklad 3:
Navrhnete algoritmus a +---------------------+ Jake bude ii, jj, *pp
nakreslete strukturogram | BB = FALSE | a *qq po provedeni:
pro vypis tohoto obrazce +-+-------------------+ int main(void)
| | AA = BB | { int ii,jj, *pp,*qq;
B + + B + + + | +-------------------+ pp = &jj;
+ B + B + + + | | vypis: KRUTA | qq = &ii;
+ + B B + + + | +-------------------+ ii = 4;
+ + + B + + + | | BB = NOT BB | jj = 22
+ + + B B + + | +-------------------+ *qq = *qq + 26
+ + + B + B + | pokud AA == FALSE | *pp = ii + 7;
+ + + B + + B +---------------------+ qq = pp;
+ + + B + + + *qq = *pp + jj;

Priklad 4: Co se vypise? Priklad 5:


+-----------------------+ Stanovte prikaz / prikazy, ktere je nutno
| for(J=2;J<7;J=J+1) | doplnit do mista P, aby vznikl pozadovany
| +---------------------+ vypis. Prikazy smite vkladat jen do mista
| | for(K=1;K<4;K++) | P, nikam jinam! +---------------------+
| | +-------------------+ | for ii = 1 to 6 |
| | | vypis: A | | +-------------------+
| +-+-------------------+ o o o o x o o o | | for jj = 1 to 8 |
| | for(K=1;K<8-J;K++) | x x x x x x x x | | +-----------------+
| | +-------------------+ o o x o o o o o | | | |
| | | vypis: * | o x o o o o o o | | | P |
| +-+-------------------+ x o o o o o o o | | | |
| | nova_radka() | o o o o o o o o | +-+-----------------+
+-+---------------------+ | | nova_radka() |
+-+-------------------+

Priklad 6: Priklad 7:
Nakreslete graf funkce Jaky bude vypis na konci MAIN ?
G(x) dane strukturogramem Funkci podprogramu vysvetlete !
+-----------------------+
| x = 0 ? | hlavni program MAIN
+-----------------------+ +-----------------------------+
| - | + | | call FERDA |
+---------------+-------+ +-----------------------------+
| x > 0 ? | | podprogram FERDA
+---------------+ | +-----------------------------+
| - | + | | | XX = ctiznak() |
+-------+-------+ | +-----------------------------+
| G=-1*x| G=1 | G=2 | | XX == '*' ? |
+-------+-------+-------+ +-----------------------------+
| + | - |
+--------------+--------------+
Priklad 8: Co se vypise? | XX=ctiznak() | call FERDA |
+-----------------------+ +--------------+--------------+
| kk = 1 | | | XX=ctiznak() |
+-----------------------+ +--------------+--------------+
| rr = 1 | | vypisznak(XX); |
+-----------------------+ +-----------------------------+
| kk <= 25 | nacitane znaky: RSTUV*WXYZ*1234
| +-+-------------------+
| | | rr = rr + 3 | Priklad 9: Delaji programy totez? Vysvetlete!
| | +-------------------+ +---------------------+ +---------------------+
| | | vypis: ALOIS | | ii = 1 | | kk = 0 |
| | +-------------------+ +---------------------+ +---------------------+
| | | kk = kk + 2 | | ii < 3 | | kk < 2 |
| | +-------------------+ | +-------------------+ | +-------------------+
| | rr < 15 | | | B[ii] = ctiznak() | | | kk = kk + 1 |
| +---------------------+ | +-------------------+ | +-------------------+
| | vypis: LEONA | | | ii = ii + 1 | | | B[kk] = ctiznak() |
+-+---------------------+ +-+-------------------+ +-+-------------------+
Řešení
Priklad 1: Priklad 2: Co se vypise? Priklad 3:
Navrhnete algoritmus a +---------------------+ Jake bude ii, jj, *qq
nakreslete strukturogram | AA = TRUE | a *pp po provedeni:
pro vypis tohoto obrazce +---------------------+ int main(void)
| BB = AA | { int ii,jj, *qq,*pp;
* C * C * C * +---------------------+ ii = 22
C * C * C * C | pokud BB == TRUE | jj = 31
* C * C * C * | +-------------------+ qq = &ii;
C * C * C * C | | BB = NOT BB | pp = &jj;
* C * C * C * | +-------------------+ *qq = ii + 2;
C * C * C * C | | vypis: OPICE | *pp = *pp + 7;
* C * C * C * +-+-------------------+ qq = pp;
*pp = *qq + jj;

Priklad 4: Co se vypise? Priklad 5:


+-----------------------+ Stanovte prikaz / prikazy, ktere je nutno
| for(K=2;K<8;K=K+1) | doplnit do mista P, aby vznikl pozadovany
| +---------------------+ vypis. Prikazy smite vkladat jen do mista
| | for(L=2;L<4;L++) | P, nikam jinam! +---------------------+
| | +-------------------+ | for ii = 1 to 7 |
| | | vypis: X | M = = = M = = | +-------------------+
| +-+-------------------+ = M = M = = = | | for jj = 1 to 7 |
| | for(L=1;L<8-K;L++) | = = M = = = = | | +-----------------+
| | +-------------------+ = M = M = = = | | | |
| | | vypis: o | M = = = M = = | | | P |
| +-+-------------------+ = = = = = M = | | | |
| | nova_radka() | = = = = = = M | +-+-----------------+
+-+---------------------+ | | nova_radka() |
+-+-------------------+

Priklad 6: Priklad 7:
Nakreslete graf funkce Jaky bude vypis na konci MAIN ?
H(x) dane strukturogramem Funkci podprogramu vysvetlete !
+-----------------------+
| x < 1 ? | hlavni program MAIN
+-----------------------+ +-----------------------------+
| - | + | | call HANUS |
+---------------+-------+ +-----------------------------+
| x = 1 ? | | podprogram HANUS
+---------------+ | +-----------------------------+
| - | + | | | XX = ctiznak() |
+-------+-------+ | +-----------------------------+
| H=-2 | H=+2*x| H=x+1 | | XX == '*' ? |
+-------+-------+-------+ +-----------------------------+
| + | - |
+--------------+--------------+
Priklad 8: Co se vypise? | XX=ctiznak() | call HANUS |
+-----------------------+ +--------------+--------------+
| rr = 2 | | XX = ctiznak() |
+-----------------------+ +-----------------------------+
| ss = 1 | | vypisznak(XX); |
+-----------------------+ +-----------------------------+
| rr <= 25 | nacitane znaky: RSTU*VWXYZ*1234
| +-+-------------------+
| | | ss = ss + 2 | Priklad 9: Delaji programy totez? Vysvetlete!
| | +-------------------+ +---------------------+ +---------------------+
| | | vypis: ANTON | | jj = 3 | | kk = 3 |
| | +-------------------+ +---------------------+ +---------------------+
| | | rr = rr + 2 | | jj < 4 | | kk < 4 |
| | +-------------------+ | +-------------------+ | +-------------------+
| | ss < 15 | | | C[jj] = ctiznak() | | | kk = kk + 1 |
| +---------------------+ | +-------------------+ +-+-------------------+
| | vypis: LINDA | | | jj = jj + 1 | | C[kk] = ctiznak() |
+-+---------------------+ +-+-------------------+ +---------------------+
Řešení

You might also like