Umístění: N/A
Čas: 6 minutes
Program čte stdin, který rozděluje do tokenů. Tokeny jsou oddělené pomocí jednoho, nebo více bílých znaků. Po přečtení celého vstupu program vypíše tokeny na stdout, vždy jeden token na řádek. Pořadí tokenů na výstupu musí odpovídat pořadí tokenů na vstupu.
Pro ukončení STDIN lze použít Ctrl+Z a následně Enter.
Umístění: N/A
Čas: 15 minutes
Implementujte třídu Position reprezentující pozici ve 2D. Implementace musí být použitelná pro následující úsek kódu:
Position up = Position(0.0, 1.0);
double up_length = up.length();
// up_length: 1
std::cout << "up_length: " << up_length << std::endl;
Position zero;
zero.add(up);
zero.add(Position(0.0, -1.0));
const Position& zero_ref = zero;
std::string zero_as_string = zero_ref.as_string();
// zero [0.0, 0.0] : 0 0
std::cout << "zero " << zero_as_string << " : " << zero.x() << " " << zero.y() << std::endl;
Počet desetinných míst na výstupu se může lišit. Hodnoty v komentářích jsou očekávaným výstupem.
Podobné "magickým metodám" v Pythonu. Provázání metod se syntaxí jazyka.
Umístění: N/A
Čas: 15 minutes
Rozšiřte implementaci z 2D Position I. aby byla použitelná pro následujíc kód.
Position up(0.0, 1.0);
Position right(1.0, 0.0);
Position direction = up + right;
direction += up;
double x = direction[0];
// direction [1, 2]
std::cout << "direction " << direction << std::endl;
// 'right' is longer
if (up < right) {
std::cout << "'up' is longer" << std::endl;
} else {
std::cout << "'right' is longer" << std::endl;
}
Umístění: ./labs/03-position/position.hpp, ./labs/03-position/position.cpp
Bodovaná úloha: ano
Čas: 10 minutes
Rozšiřte implementaci z 2D Position II. aby byla použitelná pro následujíc kód.
Position up{ 1.0, 0.0 };
up.add({ 0.0, 0.0 });
// Container for positions.
Positions position;
position.add({ 0.0, 0.0 });
// Initialization with multiple positions.
Positions list { {0.0, 0.0}, {1.0, 0.0} };