Diskuze: Hledání stejného čísla v C
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj , už máš uložený
ty čísla v poli? Pokud ano tak stačí projet to pole dvakrát a zkontrolovat
jestli se rovná
int i = 0;
int j = 0;
for(i = 0; i < DELKA_POLE; i++)
{
for(j = 0; j < DELKA_POLE; j++)
{
if(pole[j] == pole[i])
{
//Nejaký kod :)
}
}
}
chápeš to ? je možné
že jsem to vysvětlil poněkud divně
int i = 0;
int j = 0;
for(i = 0; i < DELKA_POLE; i++)
{
for(j = 0; j < DELKA_POLE; j++)
{
if(pole[j] == pole[i] && i != j)
{
//Nejaký kod :)
}
}
}
int i = 0;
int j = 0;
for(i = 0; i < DELKA_POLE; i++)
{
for(j = 0; j < i; j++)
{
if(pole[j] == pole[i])
{
//Nejaký kod :)
}
}
}
Jan Vargovský a Luboš Běhounek Satik vy chcete oba body že ?
On bohužel vyhrál
A čo takto?
int i, j;
for(i = 0; i < velkost_pola; i++)
{
for(j = 0; j < i; j++)
{
!(pole[j] ^ pole[i]) ? Nejaky_kod : 0;
}
}
return 0;
Aj ja chcem body
Jaký by měl být přínos toho kódu kromě zhoršení čitelnosti?
Čítal som, že bitové operácie sú vždy rýchlejšie ako ostatné. Ale
môžem sa mýliť.
V každom prípade je čitateľnosť kódu horšia - súhlasím. Ale sú
programátori, ktorí nechcú používať podmienky if-else.
Bitové operace jsou ve většině případů rychlejší při výpočtech
(např. x>>8 je na většině procesorů rychlejší než x/256, ale
stejně to za tebe udělá kompilátor, pokud takhle dělíš konstantou a je to
mocnina dvojky), ale zrovna porovnání je stejně rychlé jako ^ (ta tvoje
negace by na rychlost neměla vliv, protože se nepřeloží jako další
operace, ale jen se použije jiná jump instrukce).
A ternární operátor dělá to samé jako podmínka s else větví, jen je to
jinak zapsané
EDIT: Osobně ternární výrazy používám je při opravdu jednoduchých
výrazech.
Psát kód je mnohem jednodušší než ho číst, takže se snažím (kvůli
sobě, ale i kvůli ostatním programátorům) psát tak, aby bylo hned patrné,
co ten kód dělá a nesnažit se používat frikulínské zápisy, které sice
vypadají, že jsem machr, ale jejichž rozluštění pak trvá desetkrát víc
času
Satik, mne je to jasné, ale chcel som byť múdry a na to proti Vám dvom nemám vôbec šancu. Som len samouk bez praxe, takže fajn.
Schválne som si prakticky preveril tvoj aj môj spôsob v 10 000 000 cykle a
výsledný čas bol úplne rovnaký, to asi znamená, že prekladač to
preloží rovnako.
To už by asi záleželo na překladači, některý by to možná nechal jako
and, některý by z toho možná udělal porovnání, ale to jen spekuluji,
muselo by se to zkusit
Zobrazeno 15 zpráv z 15.