Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
public:rotoped.c [2010/09/21 14:13]
Šimon Tóth vytvořeno
public:rotoped.c [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 +====== Zadání ======
  
 +
 +<code cpp>
 +/* 
 +Prepiste tento program do objektoveho formatu.
 +
 +Vytvorte tridu Rotoped s nasledujicimi metodami:
 +        void nastav_vykonnost(int obtiznost1, int obtiznost2, int obtiznost3, int obtiznost4, int obtiznost5);​
 +         - nastavi pocet otacek/​minuta pro prislusne obtiznosti
 +        void nastav_aktualni_stupen(int stupen);
 +         - nastavi aktualni stupen obtiznosti
 +        int spotreba_kalorii(int minut) const;
 +         - vypocte spotrebu kalorii za minutu podle aktualne nastaveneho stupne obtiznosti
 +        void vypis_tabulku_spotreby() const;
 +        void vypis_spotrebovane_kalorie(int minut) const;
 +         - pro vypocet pouzijte metodu spotreba_kalorii()
 +
 +        Pro vystup pouzijte cout z hlavickoveho souboru iostream
 +*/
 +
 +#include <​stdio.h>​
 +
 +int main()
 +{
 +        // pocet otacek pri ruznych obtiznostech
 +        int pocet_otacek_1 = 100;
 +        int pocet_otacek_2 = 90;
 +        int pocet_otacek_3 = 75;
 +        int pocet_otacek_4 = 60;
 +        int pocet_otacek_5 = 30;
 +
 +        // pocet kalorii na ujety kilometr pri jednotlivych obtiznostech
 +        int pocet_kalorii_na_kilometr[] = { 10, 20, 50, 70, 120 };
 +
 +        // kolik otacek na rotopedu odpovida jednomu kilometru
 +        const int pocet_otacek_na_kilometr = 120;
 +
 +        // vypis tabulky ​
 +        printf("​Tabulka spotreby kalorii na kilometr\n"​);​
 +        printf("​Prvni stupen: %d\n", pocet_kalorii_na_kilometr[0]);​
 +        printf("​Druhy stupen: %d\n", pocet_kalorii_na_kilometr[1]);​
 +        printf("​Treti stupen: %d\n", pocet_kalorii_na_kilometr[2]);​
 +        printf("​Ctvrty stupen: %d\n", pocet_kalorii_na_kilometr[3]);​
 +        printf("​Paty stupen: %d\n", pocet_kalorii_na_kilometr[4]);​
 +
 +        // vypis spotreby kalorii
 +        printf("​Po %d minutach na stupni %d se spotrebuje %d kalorii\n",​ 20, 3, (20*pocet_otacek_3*pocet_kalorii_na_kilometr[2])/​pocet_otacek_na_kilometr);​
 +
 +        return 0;
 +}
 +</​code>​
 +
 +====== Řešení ======
 +
 +<code cpp>
 +#include <​iostream>​
 +using namespace std;
 +
 +class Rotoped
 +{
 +        // pouzijeme obycejne staticke pole pro ulozeni ​
 +        // poctu otacek pro jednotlive obtiznosti a poctu 
 +        // kalorii na kilometr pri jednotlivych obtiznostech
 +        int pocet_otacek[5];​
 +        int pocet_kalorii[5];​
 +        ​
 +        // pocet otacek na kilometr nechame jako konstantu
 +        const int pocet_otacek_na_kilometr;​
 +
 +        // aktualni obtiznost
 +        int aktualni_stupen;​
 +
 +        public:
 +                Rotoped() : pocet_otacek_na_kilometr(120) ​
 +                {
 +                        pocet_kalorii[0] = 10;
 +                        pocet_kalorii[1] = 20;
 +                        pocet_kalorii[2] = 50;
 +                        pocet_kalorii[3] = 70;
 +                        pocet_kalorii[4] = 120;
 +                }
 +
 +                ~Rotoped() { }
 +
 +                // nastaveni vykonnosti, jednoduse prenastavime hodnoty v internim poli
 +                void nastav_vykonnost(int obtiznost1, int obtiznost2, ​
 +                                      int obtiznost3, int obtiznost4, int obtiznost5)
 +                {
 +                        pocet_otacek[0] = obtiznost1;
 +                        pocet_otacek[1] = obtiznost2;
 +                        pocet_otacek[2] = obtiznost3;
 +                        pocet_otacek[3] = obtiznost4;
 +                        pocet_otacek[4] = obtiznost5;
 +                }
 +
 +                void nastav_aktualni_stupen_obtiznosti(int stupen)
 +                {
 +                        // tady by mela byt kontrola jestli je stupen v rozsahu 1..5
 +                        aktualni_stupen = stupen;
 +                }
 +
 +
 +                // const protozer metoda nemeni stav objektu
 +                int spotreba_kalorii(int minut) const
 +                {
 +                        // tady by mela byt kontrola jestli pocet minut je nezaporne cislo
 +                        return (minut*pocet_otacek[aktualni_stupen-1]*pocet_kalorii[aktualni_stupen-1])/​pocet_otacek_na_kilometr;​
 +                }
 +
 +                // const protoze metoda nemeni stav objektu
 +                void vypis_tabulku_spotreby() const
 +                {
 +                        cout << "​Tabulka spotreby kalorii na kilometr"​ << endl;
 +                        cout << "Prvni stupen: " << pocet_kalorii[0] << endl;
 +                        cout << "Druhy stupen: " << pocet_kalorii[1] << endl;
 +                        cout << "Treti stupen: " << pocet_kalorii[2] << endl;
 +                        cout << "​Ctvrty stupen: " << pocet_kalorii[3] << endl;
 +                        cout << "Paty stupen: " << pocet_kalorii[4] << endl;
 +                }
 +
 +                // const protoze metoda nemeni stav objektu
 +                void vypis_spotrebovane_kalorie(int minut) const
 +                {
 +                        cout << "Po " << minut << " minutach na stupni " << aktualni_stupen << " se spotrebuje " << spotreba_kalorii(minut) << " kalorii"​ << endl;
 +                }
 +};
 +
 +
 +int main()
 +{
 +        Rotoped rotoped;
 +        rotoped.nastav_vykonnost(100,​ 90, 75, 60, 30);
 +        rotoped.nastav_aktualni_stupen_obtiznosti(3);​
 +        rotoped.vypis_tabulku_spotreby();​
 +        rotoped.vypis_spotrebovane_kalorie(20);​
 +
 +        return 0;
 +}
 +</​code>​
QR Code
QR Code public:rotoped.c (generated for current page)