Kod posledniho reseni jsem nestudoval do detailu, nicmene, reseni je vcelku nestastne a to z nasledujicich duvodu:
vse je tzv. nam*dane v mainu, neexistuje cleneni do funkci, ktere ten dany kus kodu "pojmenovavaji", minimalne ten print matice by mela byt funkce, i pro debugovaci ucely
jak jsem psal vyse, manualni parsovani vstupu pomoci
fgets,
strcspn apod. je naprosto nevhodne a to z nasledujicich duvodu:
- je to nestandardni: ostatni budou muset kontrolovat, co tim chtel basnik rici a potom se dohadovat o chybach
- scanf a getline tohle vsechno davno resi - a resi to spravne a univerzalne
muj nazor na komentare je, ze v kodu by jich melo byt co nejmene, protoze to vypovida o tom, ze autor neumi svuj kod sestavit tak, aby komentare nepotreboval (tj. mel by pouzivat standardni funkce), krasne to vystihuje komentar "// Remove trailing \n" - tohle presne resi
getline a je to popsane v jeho dokumentaci
tohle je spis o definici problemu, ale i tak si nemyslim, ze je vhodne nechat program projit bez chyby pokud se prekroci limit na rozmery matice - k cemu pak je vypocet nad necelou matici? dale pak se program tvari, ze neco dela, nacita radky, parsuje, ale nic neuklada? to je dle meho nazoru podivne
tohle taky zalezi na definici a neexistuje univerzalni pravda, nicmene tyhle "skolni" priklady (stejne tak drtiva vetsina leetcode apod. problemu) parsuje vstupy ze
stdin, je to i univerzalnejsi v tom, ze pokud ma clovek vstupy v souboru, muze ten soubor samozrejme presmerovat na vstup programu, ale zaroven muze zadavat male testovaci veci na
stdin, odpada tim take osetrovani otevirani souboru, jmeno souboru (ktere je tady stejne hardcoded) atd.
Priznavam, ze jsem nejaky ten cas v pure Ccku nekodil, ale tohle je takova mala pekna ulozka pro oziveni, takze bych si dovolil take prispet svoji troskou do mlyna. Kdo najde nejakou zasadni chybu, ma u me pivo
Automatizaci testovani ponechavam jako cviceni pro zvidaveho ctenare.