Professional Documents
Culture Documents
Ř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 2: 4x GORILA
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 = 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 = ⅈ
// 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 = ⅈ
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 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 = ⅈ
+ + 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 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 = ⅈ
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 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í