Termín odevzdání | 20.3.2022 23:59 CEST |
---|---|
Možný bodový zisk | až 8b (3+3+2) |
Počet uploadů | 10 |
Napište program, který načte formátovaný text ze standardního vstupu, zpracuje jej a výsledek vytiskne na standardní výstup.
=
na samostatném řádku
config
a může nabývat těchto vlastností přes tečkovou notaci, viz. příklad níže
config.min
- config.max
včetně krajních hodnot.
A
- Z
.
1
- n
, kde n je poslední řádek
config.min=-99
config.max=100
config.width=3
.
config.align=left
;
a řádek končí znakem \n
SUM(od:do)
, který bude sčítat hodnoty na daném řádku podle rozsahu od:do
. Do příslušné buňky poté uloží výsledek
\n
+
v jejím rohu
|
-
0
config.min
a config.max
, na chybový výstup se vypíše Out of range
a návratová hodnota bude 100
Invalid input
a návratová hodnota bude 101
. Tato chybová hláška se také vypíše, když interval v příkazu SUM() bude rozsah, který program nemůže spočítat (např. existují buňky A-C a program bude chtít spočítat A-G).
Invalid configuration
a návratová hodnota bude 102
. Toto platí i v případě min>max.
Cell is too short
a návratová hodnota bude 103
K základnímu zadání přibydou ještě tato následující kritéria, zbytek zůstává ze základního zadání
config
bude rozšířena o následující parametry
stretch=1
) nebo se místo čísla vypíše n
x #
(tj. buńka bude vyplněna znaky #
), kde n
je šířka buňky (stretch=0
)
header=1
, jinak ji vypisovat nebude header=0
stretch
zadaný, na chybový výstup se vypíše Cell is too short
a návratová hodnota bude 103
.
Pokud chcete získat další 2 body, je třeba implementovat vlastní řešení načítání konfigurace a sumy. V souborech parse.cpp/hpp je uvedeno jedno z možných řešení jak načítání řešit. V případě vlastního řešení načítacích funkcí je třeba informovat cvičícího, který rozhodne jestli body přidělit nebo nepřidělit. Brute bohužel toto neumí rozpoznat a je třeba manuálního řešení.
Standardní vstup (cin) | Očekávaný výstup (cout) | Očekávaný chybový výstup (cerr) | Návratová hodnota |
---|---|---|---|
config.min=-99 config.max=150 config.width=3 config.align=left = 10;20;20;SUM(A:C) -10;-20;-30;-40;-50 | config.min=-99 config.max=150 config.width=3 config.align=left +-----+-----+-----+-----+-----+-----+ | | A | B | C | D | E | +-----+-----+-----+-----+-----+-----+ | 1 | 10 | 20 | 20 | 50 | | +-----+-----+-----+-----+-----+-----+ | 2 | -10 | -20 | -30 | -40 | -50 | +-----+-----+-----+-----+-----+-----+ | 0 | |
config.width=3 config.align=right = 10;20;30;SUM(A:C) -40;-50;-60;-70 90;80;-20;-30 | config.min=-99 config.max=100 config.width=3 config.align=right +-----+-----+-----+-----+-----+ | | A | B | C | D | +-----+-----+-----+-----+-----+ | 1 | 10 | 20 | 30 | 60 | +-----+-----+-----+-----+-----+ | 2 | -40 | -50 | -60 | -70 | +-----+-----+-----+-----+-----+ | 3 | 90 | 80 | -20 | -30 | +-----+-----+-----+-----+-----+ | 0 | |
config.min=0 config.max=10 = 10;20;30;SUM(A:C) 60;20;70 | Out of range | 100 | |
config.min=0 config.max=1000 = a;b;c;400;500;SUM(A:E) 60;20;30;40;50;60;70 | Invalid input | 101 | |
config.min=0 config.max=1000 config.width=-5 = 100;200;300;400;500;SUM(A:E) 60;20;30;40;50;60;70 | Invalid configuration | 102 | |
config.min=0 config.max=1000 config.width=2 = 100;200;300;400;500;SUM(A:E) 60;20;30;40;50;60;70 | Cell is too short | 103 | |
config.min=-5000 config.max=5000 config.width=3 config.align=left config.stretch=0 = 3300;4400;20;SUM(A:C) -40;-50;-60 | config.min=-5000 config.max=5000 config.width=3 config.align=left config.stretch=0 +-----+-----+-----+-----+-----+ | | A | B | C | D | +-----+-----+-----+-----+-----+ | 1 | ### | ### | 20 | ### | +-----+-----+-----+-----+-----+ | 2 | -40 | -50 | -60 | | +-----+-----+-----+-----+-----+ | 0 | |
config.min=-5000 config.max=5000 config.width=3 config.align=left config.stretch=1 = 3300;4400;20;SUM(A:C) -40;-50;-60 | config.min=-5000 config.max=5000 config.width=4 config.align=left config.stretch=1 +------+------+------+------+------+ | | A | B | C | D | +------+------+------+------+------+ | 1 | 3300 | 4400 | 20 | 7720 | +------+------+------+------+------+ | 2 | -40 | -50 | -60 | | +------+------+------+------+------+ | 0 | |
config.min=-99 config.max=100 config.width=4 config.align=left config.header=0 = 33;44;20;SUM(A:C) -40;-50;SUM(A:B);SUM(A:C) 3;14;15;92 | config.min=-99 config.max=100 config.width=4 config.align=left config.header=0 +------+------+------+------+ | 33 | 44 | 20 | 97 | +------+------+------+------+ | -40 | -50 | -90 | -180 | +------+------+------+------+ | 3 | 14 | 15 | 92 | +------+------+------+------+ | 0 |
Do systému BRUTE odevzdejte zabalený archiv s *.cpp a případně *.hpp soubory s libovolným jménem. Všechny soubory musí být v kořenovém adresáři archivu.
Veřejné příklady + Template: HW01.zip (gitlab)
Povinné i bonusové zadání | |
---|---|
Název v BRUTE | HW01 |
Soubor/y | jakékoliv množství *.cpp/*.hpp souborů |
Argumenty při spuštění | žádné |
Kompilace pomocí | g++ -pedantic -Wall -Werror -std=c++17 |
Procvičované oblasti | standardní vstup a výstup v C++ |