Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Hledání stejného čísla v C

Aktivity
Avatar
Argo5
Člen
Avatar
Argo5:26.11.2014 16:54

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
Samuel Kodytek
Tvůrce
Avatar
Samuel Kodytek:26.11.2014 17:04

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
26.11.2014 17:04
There is more than one way to screw it
Avatar
Argo5
Člen
Avatar
Odpovídá na Samuel Kodytek
Argo5:26.11.2014 17:11

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

 
Nahoru Odpovědět
26.11.2014 17:11
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Samuel Kodytek
Jan Vargovský:26.11.2014 17:49
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
26.11.2014 17:49
Avatar
Odpovídá na Jan Vargovský
Luboš Běhounek Satik:26.11.2014 17:54
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
26.11.2014 17:54
https://www.facebook.com/peasantsandcastles/
Avatar
Neaktivní uživatel:26.11.2014 18:26

Jan Vargovský a Luboš Běhounek Satik vy chcete oba body že ? :D

Nahoru Odpovědět
26.11.2014 18:26
Neaktivní uživatelský účet
Avatar
Jan Vargovský
Tvůrce
Avatar
Jan Vargovský:26.11.2014 18:27

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):26.11.2014 19:57

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:26.11.2014 20:14

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
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Libor Šimo (libcosenior):26.11.2014 20:17

Čí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:26.11.2014 20:27

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
26.11.2014 20:27
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Libor Šimo (libcosenior):26.11.2014 22:04

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):27.11.2014 10:37

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:27.11.2014 11:54

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
https://www.facebook.com/peasantsandcastles/
Avatar
Ziki
Tvůrce
Avatar
Ziki:11.12.2014 14:43
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.