Rozdíly

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

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
public:stringint [2011/01/13 09:57]
Petr Svenda [PB161 Jazyk C++ - Závěrečný příklad Stringint]
public:stringint [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 +====== PB161 Jazyk C++ - Závěrečný příklad Stringint ======
  
 +  * Úkol zadán: **13. 12. 2010**
 +  * Deadline odevzdání:​ **12. 2. 2010**
 +
 +Doplnění zadání (zobrazeno __podtrženě__):​
 +  * 13.1. Oprava přebytečné cifry v zadaní operandu testů na násobení a dělení
 +  * 13.1. Přidán testovací soubor s main pro ověření funkčnosti
 +  * Specifikace konstruktoru
 +
 +==== Představení úkolu ====
 +
 +Implementace celočíselné aritmetiky pomocí datového typu std::​string ​
 +
 +==== Zadání ====
 +
 +Vytvořte nový typ ''​stringint''​ postavený nad datovým typem ''​std::​string''​ a použijte ho pro implementaci celočíselné aritmetiky s libovolnou délkou čísla. Nadefinujte pro něj mj. aritmetické operátory +, -, *, /, %, ^ (mocnina), ~ (2. odmocnina); ​ bližší podrobnosti dále
 +
 +====Požadavky:​ ====
 +  * Datový typ 
 +    * Pro uložení dat používejte datový typ ''​std::​string''​ (jedna číslice bude reprezentována jedním znakem).
 +    * Pro zjednodušení výpočtů můžete použít inverzní zápis(číslo 123 se uloží jako řetězec 321). 
 +    * Zvolte formát který bude vhodný jak pro kladná, tak pro záporná čísla. ​  
 +  * __Konstruktory a destruktory__
 +    * bezparametrický konstruktor (incializuje objekt na hodnotu 0)
 +    * parametrické
 +      * ''​long int'',​ ''​unsigned long int''​ (inicializují objekt na příslušnou hodnotu)
 +      * ''​string''​ (stejné pravidla jako operátor vstupu)
 +    * kopírovací ​
 +    * destruktor
 +  * Operátor vstupu <​nowiki>">>"</​nowiki>​
 +    * Operátor vstupu musí být schopen reagovat na neúplná a špatně zadaná čísla.("​-12a234"​ bude načteno jako -12, "​xasf2"​ bude načteno jako 0, nepovažuje se za chybu.) ​  
 +  * Operátor výstupu <​nowiki>"<<"</​nowiki>​
 +    * Čísla vypisujte ve standardním formátu. U záporných čísel nezapomeňte vypsat znaménko. ​  
 +    * Operátor <​nowiki>"<<"</​nowiki>​ naprogramujte tak, aby byly možné zápisy stylu "cout "​. ​
 +  * Operátory +, - (včetně unárního),​ *, /, % (zbytek po dělení) ​
 +    * Nezapomínejte že jde o celočíselnou aritmetiku. (5/​6=0) ​
 +    * Nedefinované hodnoty převádějte na nulu  bez indikace chyby. (2/​0=0) ​  
 +  * Operátory ^, ~ 
 +    * Operátor ^  představuje mocninu. Operátor je binární. (2^3=8) ​
 +    * Operátor ~  představuje 2. odmocninu. Nezapomínejte že jde o celočíselnou aritmetiku. (~15=3) ​  
 +  * Věnujte pozornost efektivitě prováděných operací, zejména operátory ^ a ~ mají při nevhodné implementaci tendenci pracovat pomalu. ​
 +  * Odevzdávat budete do adresáře ​ /​export/​e1/​pb161/​váš_login/​zaver;​ odevzdáte ​ tyto soubory: stringint.h (hlavičkový soubor s definicí typu stringint) a stringint.cpp (implementace typu stringint). Pro otestování si vytvořte soubor stringintmain.cpp;​ odevzdejte ho také, ale nebude hodnocen. ​
 +  * Program odlaďte na počítači aisa
 +  * Kód opatřete kvalitními komentáři pro nástroj Doxygen ​
 +=====Testování=====
 +  * Odevzdané soubory by mělo být možné zkompilovat s následujícím souborem [[:​public:​pb161:​stringmain_test | stringmain_test.cc]] ​  
 +  * Odevzdané soubory překládejte pomocí g++ -ansi -pedantic -Wall -Werror stringmain_test.cc stringint.cc -o stringint
 +  * Po spuštění programu ./stringint proběhne sada testů s výpisem očekávané odpovědi
 +
 +
 +
 +====Poznámky:​====
 +  * Abyste se vyhnuli problémům s bílými znaky, nenačítejte vstup po znacích, ale celý řetěz najednou. ​
 +  * Tuto úlohu připravil Šimon Tóth.
QR Code
QR Code public:stringint (generated for current page)