Diskuze: Problem s binarnim vyhladavanim v C

C++ C a C++ Problem s binarnim vyhladavanim v C

Avatar
Head
Člen
Avatar
Head:

Nevedel by mi niekto povedať prečo časť s binarnim vyhladavanim nefunguje ?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned int dlzka_pola, pole[50], i, j, pp;
    printf("Zadaj dlzku pola\n");
    scanf("%d", &dlzka_pola);
    srand(time(0));
    printf("Nezoradene pole: ");
    for (i=0; i<dlzka_pola; i++)
    {
     pole[i] =1+ rand() % 100;
     printf("%d ", pole[i]);
    }

    printf("\nZoradene pole:   ");
    for (i=0; i<dlzka_pola; i++)
    {
     for (j=0; j<dlzka_pola; j++)
     {
      if (pole[j]>pole[j+1])
       {
        pp=pole[j];
        pole[j]=pole[j+1];
        pole[j+1]=pp;
       }
     }
    }
     for (i=0; i<dlzka_pola; i++)
        {
         printf("%d ", pole[i]);
        }


    int lava=0,prava=dlzka_pola,stred,hladany_prvok;
    printf("\nZadaj hladany prvok:");
    scanf("%d", &hladany_prvok);
    do
    {
     stred=(lava + prava) / 2;
     if (hladany_prvok > stred)
        lava=stred+1;
     else if (hladany_prvok < stred)
        prava=stred-1;
    } while(hladany_prvok != pole[stred] && lava <= prava);
    if (hladany_prvok == pole[stred])
        printf("Hladany prvok sa nasiel");
    else
        printf("Hladany prvok sa nenasiel");


    return 0;
}
 
Odpovědět 22.10.2014 19:32
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na Head
Silvinios:

Ve while cyklu se proměnná hladany_prvok chybně porovnává s indexem stred, místo aby se porovnávala s hodnotou pole[stred].

Akceptované řešení
+20 Zkušeností
Řešení problému
 
Nahoru Odpovědět  +1 22.10.2014 19:52
Avatar
Head
Člen
Avatar
Odpovídá na Silvinios
Head:

dakujem ... neviem kde som rozum nechal -_-

 
Nahoru Odpovědět 22.10.2014 20:55
Avatar
Odpovídá na Head
Libor Šimo (libcosenior):

Čo je to binárne vyhľadávanie?

Nahoru Odpovědět 28.10.2014 12:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 28.10.2014 13:29
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
Nahoru Odpovědět 29.10.2014 7:35
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 6 zpráv z 6.