NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Kritika kódu

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:25.5.2015 18:26

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
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:25.5.2015 18:51

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
Neaktivní uživatelský účet
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:25.5.2015 22:15

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
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Lukáš Hruda:25.5.2015 22:51

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
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Martin Dráb:25.5.2015 22:58

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
Odpovídá na Martin Dráb
Neaktivní uživatel:26.5.2015 6:01

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

Nahoru Odpovědět
26.5.2015 6:01
Neaktivní uživatelský účet
Avatar
petr.dar
Člen
Avatar
petr.dar:27.5.2015 14:28

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
Tvůrce
Avatar
Martin Dráb:27.5.2015 14:45

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
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:27.5.2015 14:57

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):27.5.2015 15:29

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

Nahoru Odpovědět
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.