Avatar
Argo5
Člen
Avatar
Argo5:

Dobrý den.Potřeboval bych poradit s domácím úkolem.Mám za úkol napsat program, který vyzve uživatele, aby zadal 10 čísel a ty se uloží do pole.S tím problém nemám.Program má ale zjistit,jestli se nějaké číslo opakuje.Potřeboval bych od vás doporučený nějaký postup nebo alespoň nějaké vodítko.
Děkuji

 
Odpovědět 26.11.2014 16:54
Avatar
Monarezio
Redaktor
Avatar
Monarezio:

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ě :D

Nahoru Odpovědět  +1 26.11.2014 17:04
First, solve the problem. Then, write the code.
Avatar
Argo5
Člen
Avatar
Odpovídá na Monarezio
Argo5:

Myslím že už jsem na to přišel :D Díky za pomoc :)

 
Nahoru Odpovědět  +1 26.11.2014 17:11
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Monarezio
Jan Vargovský:
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 :)
      }
   }
}
;)
 
Nahoru Odpovědět  +1 26.11.2014 17:49
Avatar
Odpovídá na Jan Vargovský
Luboš Běhounek (Satik):
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 :)
      }
   }
}
;)
Nahoru Odpovědět  +4 26.11.2014 17:54
:)
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
 
Nahoru Odpovědět 26.11.2014 18:26
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

On bohužel vyhrál :D

 
Nahoru Odpovědět 26.11.2014 18:27
Avatar
Odpovídá na Luboš Běhounek (Satik)
Libor Šimo (libcosenior):

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 :-D

Editováno 26.11.2014 19:58
Nahoru Odpovědět 26.11.2014 19:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Luboš Běhounek (Satik):

Jaký by měl být přínos toho kódu kromě zhoršení čitelnosti? :P

Nahoru Odpovědět 26.11.2014 20:14
:)
Avatar
Odpovídá na Luboš Běhounek (Satik)
Libor Šimo (libcosenior):

Čí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.

Editováno 26.11.2014 20:20
Nahoru Odpovědět 26.11.2014 20:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Luboš Běhounek (Satik):

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 :D

Editováno 26.11.2014 20:30
Nahoru Odpovědět  +2 26.11.2014 20:27
:)
Avatar
Odpovídá na Luboš Běhounek (Satik)
Libor Šimo (libcosenior):

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.

Nahoru Odpovědět 26.11.2014 22:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Luboš Běhounek (Satik)
Libor Šimo (libcosenior):

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. :-)

Nahoru Odpovědět 27.11.2014 10:37
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Luboš Běhounek (Satik):

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 :)

Nahoru Odpovědět 27.11.2014 11:54
:)
Avatar
Ziki
Redaktor
Avatar
Ziki:
int i = 0;
int j = 0;
for(i = 0; i < DELKA_POLE - 1; i++)
{
   for(j = i + 1; j < DELKA_POLE; j++)
   {
      if(pole[j] == pole[i])
      {
         //Nejaký kod :)
      }
   }
}

takto mi to přijde o něco rychlejší (sice nepatrně, ale přece) :)

Nahoru Odpovědět 11.12.2014 14:43
Ve vědění je síla.
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 15 zpráv z 15.