Diskuze: Kritika kódu

C++ C a C++ Kritika kódu

Avatar
Inoue Yūki
Redaktor
Avatar
Inoue Yūki:

Zdravím! Začínám se učit C++ a jelikož jsem ho viděl před pár týdny z dálky, pouze za pomoci mých dosavadních zkušeností v jiných jazycích a internetu jsem zplodil nějaký C++ kód. Chtěl bych, aby se na něj podíval někdo zkušenější a tak nějak ho zkritizoval. Jak by se dal algoritmus zrychlit/zkrátit, použité funkce a postupy, přenositelnost, atp. Zkrátka jestli by se dal využít v reálné praxi (s odstupem - chápu, že tak primitivní program by větší využití neměl).

// Funkce (atp.) jsou pojmenovány v češtině. Chtějí to po nás ve škole. Žádný problém by to dělat nemělo, nicméně kdyby se našel někdo, koho by ta čeština pálila do fotoreceptorů, tak ví, proč to tak je.

Kód: http://pastebin.com/Pj3FB9FB

Předem děkuji! :)

Editováno 25.5.2015 18:27
Odpovědět 25.5.2015 18:26
Avatar
jan.ruzicka01
Redaktor
Avatar
jan.ruzicka01:

Rozhodně lepší než můj. :) Dle mého názoru je to vypadá docela k světu.

Nahoru Odpovědět 25.5.2015 18:51
';' je má jediná noční můra...
Avatar
Martin Dráb
Redaktor
Avatar
Martin Dráb:

Používáš tam několikrát typ std::array<int, 12>, možná by stálo za to si jej speciálně pojmenovat.

Do funkce vycetka předáváš druhý parametr hodnotou, ale asi by byla lepší konstantní reference (const array<int, 12> &). Ušetříš tak jedno kopírování toho pole. samozřejmě za předpokladu, že se jedná o pole konstant.

Jestli to chápu dobře, tak program nebude zrovna nadšený, když místo částky zadáš něco, co číslem třeba vůbec není. Měl bys ověrovat, že uživatel zadal správný vstup předtím, než tento vstup použiješ.

Víc mě k tomu při rychlém pohledu nenapadá (resp. asi ano, ale jedná se o hodně subjektivní věci, které souvisí s mým stylem programování).

Jinak pokud chceš, aby program byl rychlý, jakože opravdu při svém výpočtu využíval na maximum procesor a jiná zařízení, s vysokou pravděpodobností nebude hezky vypadat.

Nahoru Odpovědět 25.5.2015 22:15
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Inoue Yūki
Lukáš Hruda (Luckin):

Mně osobně tam na první pohled nejvíc vadí ty globální proměnné.

 
Nahoru Odpovědět 25.5.2015 22:51
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Lukáš Hruda (Luckin)
Martin Dráb:

Mně osobně tam na první pohled nejvíc vadí ty globální proměnné.

Je fakt, že by všechny mohly být lokální (pokud už by musely existovat), ale ten program mi přišel tak malý, že jsem se na toto vůbec nedíval.

Nahoru Odpovědět 25.5.2015 22:58
2 + 2 = 5 for extremely large values of 2
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na Martin Dráb
Inoue Yūki:

Díky moc, přečtu si něco o tom. :)

Nahoru Odpovědět 26.5.2015 6:01
Avatar
petr.dar
Člen
Avatar
petr.dar:

Zeptám se laicky, Co znamená atoi ma 25 řádku? V knížkách jsem to neviděl

 
Nahoru Odpovědět 27.5.2015 14:28
Avatar
Martin Dráb
Redaktor
Avatar
Martin Dráb:

Zeptám se laicky, Co znamená atoi ma 25 řádku? V knížkách jsem to neviděl

atoi je Cčková funkce, která převádí ANSI řetězec (char *) na celé číslo. Její název lze považovat za zkratku z "ANSI TO Integer".

Dokumentace k ní:
http://www.cplusplus.com/…stdlib/atoi/

Nahoru Odpovědět  +1 27.5.2015 14:45
2 + 2 = 5 for extremely large values of 2
Avatar
petr.dar
Člen
Avatar
Odpovídá na Martin Dráb
petr.dar:

No jo, ale proč tam teda nejni #include <cstdlib>?

 
Nahoru Odpovědět 27.5.2015 14:57
Avatar
Odpovídá na petr.dar
Libor Šimo (libcosenior):

Pretože
#include "stdafx.h"
includuje štandartné knižnice

Nahoru Odpovědět  +1 27.5.2015 15:29
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.