Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:16.8.2012 13:14

Poradí mi někdo, jak z daných hodnot dostat největší a nejmenší?

Odpovědět 16.8.2012 13:14
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
Drahomír Hanák:16.8.2012 13:19

Zkus operátory >, < ;)

 
Nahoru Odpovědět 16.8.2012 13:19
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Drahomír Hanák
Zdeněk Pavlátka:16.8.2012 13:21

Nemyslím porovnání dvou hodnot, ale vyhledání největší a nejmenší hodnoty z 16 čísel.

Nahoru Odpovědět 16.8.2012 13:21
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Drahomír Hanák:16.8.2012 13:23

To je jedno. Jestli je máš třeba v poli, udělej to asi takhle:

int i, nejvetsi;
for(i = 0; i < delkaPole; i++) {
   if (pole[i] > nejvetsi)
      nejvetsi = pole[i];
}
 
Nahoru Odpovědět 16.8.2012 13:23
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 16.8.2012 13:26
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 16.8.2012 15:30
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:13.11.2012 19:10

Prosím, nemohl by mi někdo pomoci najít chybu?

for(i = 0; i < n; i++)//n=počet prvků v poli
{
        for(j = 0; j < n; j++)
        {
                if (vstup[j] < vstup[used] && (vstup[j] > vstup[c] || c == -1))
                {
                        c = j;
                }
        }
        vystup[i] = vstup[c];
        used = c;
}

for(i = 0; i < n; i++)
{
        cout << vystup[i] << " ";
}
Editováno 13.11.2012 19:16
Nahoru Odpovědět 13.11.2012 19:10
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Jančík:13.11.2012 19:28

Co to má dělat nepovíš?

PS: Trošku ty zdrojáky formátuj, ať se v tom dá vyznat ;)

Nahoru Odpovědět 13.11.2012 19:28
Čím více času dostaneš, tím méně ho máš.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:13.11.2012 19:32

Má to setřídit pole čísel. (-1 pro c je počáteční hodnota)
Problém je v tom, že to najde maximum a všechny hodnoty v poli vystup nastaví na něj.
PS: Co myslíš tím formátováním?

Nahoru Odpovědět 13.11.2012 19:32
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
matesax:13.11.2012 19:32

Cykly - nač? LINQ...

int
   max = xxx.Max(),
   min = xxx.Min();
Editováno 13.11.2012 19:34
 
Nahoru Odpovědět 13.11.2012 19:32
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:13.11.2012 19:35

Vidím 2x tu samou řídící proměnnou cyklu u vnořených cyklů... Kdybys používal normální jazyk, napsal bys pole.Sort a měl bys hotovo.

Editováno 13.11.2012 19:36
Nahoru Odpovědět 13.11.2012 19:35
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na matesax
Zdeněk Pavlátka:13.11.2012 19:35

Co to má bejt? Tady jde o C++!

Nahoru Odpovědět 13.11.2012 19:35
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Jančík:13.11.2012 19:37

Podívej se do sekce Algoritmy.

Nahoru Odpovědět 13.11.2012 19:37
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
matesax:13.11.2012 19:39

Ano - a proč by jsi tam nemohl použít LINQ?

from s in xxx orderby s.xxx descending group s by s.name into g where g.Count() > 1 select g.First();
Editováno 13.11.2012 19:42
 
Nahoru Odpovědět 13.11.2012 19:39
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na David Jančík
Zdeněk Pavlátka:13.11.2012 19:40

Potřebuju Log-space algoritmus.

Nahoru Odpovědět 13.11.2012 19:40
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:13.11.2012 19:44

Protože používat řízené knihovny v C++ nemá žádný smysl. Zase píšeš někam, kam nemáš.

Nahoru Odpovědět 13.11.2012 19:44
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:13.11.2012 19:45

Oprav si tu řídící proměnnou, máš tam 2x íčko.

Nahoru Odpovědět 13.11.2012 19:45
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Zdeněk Pavlátka:13.11.2012 19:50

Nepomáhá... A ten kód se tu zobrazil nějak divně, měl jsem to takhle:

for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if (vstup[j]<vstup[used] && (vstup[j]>vstup[c] || c==-1))
c=j;
}
vystup[i]=vstup[c];
used=c;
}
for(i = 0; i < n; i++)
{
cout << vystup[i] << " ";
}
Nahoru Odpovědět 13.11.2012 19:50
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:13.11.2012 19:53

Ano, to protože se nad tebou David slitoval a naformátoval ho, aby se to dalo číst... 8|

Nahoru Odpovědět 13.11.2012 19:53
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Zdeněk Pavlátka:13.11.2012 19:55

Jenže tam asi dal špatně ty závorky. ;)

Nahoru Odpovědět 13.11.2012 19:55
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Jančík:13.11.2012 19:57

Koukám. Už sem ti je spravil.

Nahoru Odpovědět 13.11.2012 19:57
Čím více času dostaneš, tím méně ho máš.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:13.11.2012 19:57

To mu nemůžeš mít za zlé, když se to nedalo číst :D Co používáš za IDE, že neformátuješ kód?

Napiš nám prosím co chceš udělat, už se tě na to ptal David Jančík, pořád tu nevidím odpověď. Pokud chceš maximum, nahoře ti to psal Drahomír Hanák, setřídění polí máš v sekci algoritmy asi 10x se zdrojákem, vyber si.

Nahoru Odpovědět 13.11.2012 19:57
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
Zdeněk Pavlátka:13.11.2012 20:00

Microsoft Visual C++ 2010 Express
Potřebuju Log-space algoritmus na setřídění pole.

Nahoru Odpovědět 13.11.2012 20:00
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:13.11.2012 20:03

A proč pomocí VS neformátuješ kód? Za tohle by tě ve firmě vyhodili.

O log-space jsem v životě neslyšel a koukám, že ani Google ne. Zeptal bych se ještě jednou, co chceš udělat, ale už mě to moc nebaví :)

Nahoru Odpovědět 13.11.2012 20:03
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:13.11.2012 20:04

Algoritmus s logaritmickým množstvím paměti.

Nahoru Odpovědět 13.11.2012 20:04
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Zdeněk Pavlátka
David Čápka:13.11.2012 20:06

Takový algoritmus neexistuje. Pokud máš na mysli asymptotickou časovou složitost, tak nejlepší čas pro setřídění pole je n log n, opět tě odkáži na sekci algoritmy, vyber si tam nějaký, např. Quicksort.

Nahoru Odpovědět 13.11.2012 20:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):13.11.2012 20:13
template <typename type>
inline swapf(type & a, type & b)  //prohodi hodnoty
{
  type c = a;
  a = b;
  b = c;
}

template <typename type>
void bubble_sort(type* ar, int count)
{
  bool sorted = false;
  while(!sorted)
  {
    sorted = true;
    for(int i=0;i<count-1;i++)
      if(ar[i] > ar[i+1])
      {
        swapf(ar[i],ar[i+1]);
        sorted = false;
      }
  }
}

template <typename type>
void insert_sort(type* ar, int count)
{
  for(int i=0;i<count-1;i++)
    while(ar[i] > ar[i+1])
    {
      swapf(ar[i], ar[i+1]);
      if(i > 0) i--;
    }
}

template <typename type>
void select_sort(type* ar, int count)
{
  int min = 0;
  int first = 0;
  for(int i=0;i<count;i++)
  {
    for(int j=first;j<count;j++)
      if(ar[j] < ar[min])
        min = j;
    swapf(ar[min], ar[first]);
    first++;
    min = first;
  }
}

template <typename type>
void quick_sort(type* ar, int count, int b, int e)
{
  type pivot = ar[(e + b) / 2];
  int begin = b;
  int end = e;

  while(begin < end)
  {
    while(ar[begin] < pivot && begin < e) begin++;
    while(ar[end] > pivot && end > b) end--;

    if(begin <= end)
    {
      swapf(ar[begin], ar[end]);
      if(begin < e) begin++;
      if(end > b) end--;
    }
  }
  if(end > b) quick(b,end);
  if(begin < e) quick(begin,e);
}

Můžeš si vybrat.
(Byly to členský funkce třídy, narychlo sem to upravil, může tam bejt chyba.)

 
Nahoru Odpovědět 13.11.2012 20:13
Avatar
Kit
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Kit:13.11.2012 20:14

Nerozumím tomu. Máš to pole třídit na malá a velká čísla nebo ho máš seřadit podle velikosti?

Nahoru Odpovědět 13.11.2012 20:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:13.11.2012 20:22

Zdeněk Pavlátka psal s "logaritmickým množstvím paměti". Což je také blbost.

Editováno 13.11.2012 20:22
Nahoru Odpovědět  +1 13.11.2012 20:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Zdeněk Pavlátka
Lukáš Hruda (Luckin):13.11.2012 20:31

oprava... má tam bejt inline void swapf(...)

 
Nahoru Odpovědět 13.11.2012 20:31
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Kit
Zdeněk Pavlátka:14.11.2012 6:53

Jo jo jo. Je to do školy. Tam to pojmenovali takhle. (já se taky divil) Hodnota žádné proměnné nesmí přesáhnout to n, všechny proměnné mají být celočíselných typů a nesmím použít rekurzi. Jediná výjimka je vstup a výstup. Ze vstupu se smí jen číst a do výstupu jen zapisovat.

Editováno 14.11.2012 6:53
Nahoru Odpovědět 14.11.2012 6:53
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Kit:14.11.2012 7:16

Mně už přišlo podivné, že místo pojmu "řazení" používají pojem "třídění", který znamená něco jiného, než co po vás chce. Učitel informatiky by to měl znát.

Nahoru Odpovědět 14.11.2012 7:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:14.11.2012 7:27

Radix sort může být ještě o něco rychlejší, ale má smysl jen u obrovského množství dat s pevnou strukturou. Má složitost m×n, kde m je počet průchodů, který se nastavuje pevně předem. Hodí se zejména když se data nevejdou do RAM.

Nahoru Odpovědět 14.11.2012 7:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:14.11.2012 10:10

Můžeš upřesnit rozdíl mezi tříděním a řazením? Nám na vejšce říkali něco jako že to nemáme řešit, že se to stejně zaměňuje.

Nahoru Odpovědět 14.11.2012 10:10
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:14.11.2012 10:59

Třídí se do skupin. Řazení je podle abecedy či velikosti.

Například broskve se třídí podle velikosti a kvality, ale neřadí se podle velikosti. Stejně tak se třídí dopisy podle PSČ, ale řazení u nich nemá význam.

Na vaší vejšce si to možná pletou, ale na naší si to nepletli a tvrdě vyžadovali rozlišování.

Například radix sort je řazení tříděním. Kdybys napsal "třídění tříděním", asi by to vypadalo trochu divně.

Nahoru Odpovědět 14.11.2012 10:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:14.11.2012 11:16

To abych to tu upřesnil :)

Nahoru Odpovědět 14.11.2012 11:16
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:14.11.2012 11:39

Ale ony se řadí... :) Podle rozměrů a váhy platíš známku...

 
Nahoru Odpovědět 14.11.2012 11:39
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:14.11.2012 11:43

Posílají se dál balíky seřazené podle velikosti? To asi ne. Balíky se pouze třídí.

Nahoru Odpovědět 14.11.2012 11:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:14.11.2012 16:08

Reagoval jsem na:

"Stejně tak se třídí dopisy ..."

 
Nahoru Odpovědět 14.11.2012 16:08
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:14.11.2012 16:12

Napsal jsi "Ale ony se řadí...", tedy dopisy nebo i balíky. Neřadí se, ale třídí. Tak to nepřekrucuj.

Nahoru Odpovědět 14.11.2012 16:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:14.11.2012 16:16

To ty překrucuješ - o balíkách tam nemáš ani písmenko. Takže jsem na balíky nemohl reagovat... Podle tvé definice se i řadí...

 
Nahoru Odpovědět 14.11.2012 16:16
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:14.11.2012 16:21

A jak se tedy podle mé definice a tvých představ řadí dopisy? Podle velikosti (od nejmenšího po největší nebo naopak) nebo podle abecedy? Případně podle PSČ vzestupně nebo sestupně?

Nahoru Odpovědět 14.11.2012 16:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:14.11.2012 16:26

Myslím, že Kit to zde vysvětlil jasně a není potřeba další diskuze.

Nahoru Odpovědět 14.11.2012 16:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Tato diskuze byla označena moderátorem jako nekonstruktivní a myslíme si, že nemá pro veřejnost příliš vysokou hodnotu. Členy můžete samozřejmě stále oslovit soukromě a to formou zpráv nebo chatu.

Zobrazeno 43 zpráv z 43.