c++ poprawa kodu przeszukujacego

0

Witam mam zrobic program w c++ ktory ma za zadanie znaleŹĆ poszukiwany element x w tablicy ktora generujemy w sposob pseudolosowy, gdzie mozna wybrac sposob przeszukiwania: liniowego lub binarnego.

Mysle ze powinno to byc cos takiego ale mam sporo bledow w tym kodzie wiec prosze o poprawe:

# include <iostream>
using namespace std;

int liniowe(int tab[n], int x)
{
for(int i=0; (i<n)&&(tab[i]!=x); i++);
return i;
cout<<i;
}

int binarne(int tab[], int x)
{
enum{TAK,NIE} znalazlem=NIE;
int left=0, right=n-1, mid;
while(left<=right && znalazlem!=TAK)
{
mid=(left+right)/2;
if(tab[mid]==x)
znalazlem=TAK;
else
if(tab[mid]<x)
left=mid+1;
else
right=mid-1;
}
if(znalazlem==TAK)
return mid;
else return -1;
cout<<mid;
}

int main()
{
int tab[n];
int z;
int u;
cout<<"ile elementow ma miec zbior";
cin>>n;
cout<<"do jakiej liczby ma byc zakres losowanych liczb";
cin>>z;
cout<<"podaj szukany element";
cin>>x;
srand(time(0));
for(int i=0; i<n; i++)
{
tab[n] = rand() %z;
}
cout<<"Wybierz metode przeszukiwania:";
cout<<"1 - liniowe";
cout<<"2 - binarne";
cin>>u;

if(u==1)
{
liniowe(tab[n], x)
}
if(u==2)
{
binarne(tab[n], x)
}

system("PAUSE");
return 0;
}
0
return i;
cout<<i;

Żadna intrukcja występująca PO returnie się nie wykona
2. Zamiast jakiegoś enuma lepiej chyba użyć bool'a zwykłego
3.

int tab[n];

Przepraszam, ale gdzie jest stworzona zmienna n ? Ja tam takiej nie widzę...
4.

tab[n] = rand() %z;

? A nie chodzilo czasem o

tab[i] = rand() %z;

?
5.

if(u==1)
{
liniowe(tab[n], x)
}
if(u==2)
{
binarne(tab[n], x)
}

Brawo, ale twoje funkcje nic nie wypisują, tylko zwracają wartość. A ty nic z tą wartością nie robisz. Moze warto ją wypisać?

if(u==1)
{
  cout<<liniowe(tab[n], x)<<endl;
}
else if(u==2)
{
  cout<<binarne(tab[n], x)<<endl;
}
  1. (!) Naucz sie formatować kod!
0

poprawilem to jak mi doradziles ale nadal mam bledy:

4: error: `n' was not declared in this scope

In function int liniowe(int)': 6: error: n' undeclared (first use this function)
6: error: (Each undeclared identifier is reported only once for each function it appears in.)

6: error: tab' undeclared (first use this function) In function int binarne(int*, int)':

13: error: n' undeclared (first use this function) In function int main()':
5: error: too many arguments to function int liniowe(int)' 55: error: at this point in file 59: error: invalid conversion from int' to int*' 59: error: initializing argument 1 of int binarne(int*, int)'

0

4: error: `n' nie jest zadeklarowane w tym zasięgu

W funkcji int liniowe(int)': 6: error: n' nie jest zadeklarowane
6: error: (Each undeclared identifier is reported only once for each function it appears in.)

6: error: tab' nie jest zadeklarowane W funkcji int binarne(int*, int)':

13: error: n' nie jest zadeklarowane W funkcji int main()':
5: error: za dużo argumentów do funkcji int liniowe(int)' 55: error: at this point in file 59: error: nieprawidłowa konwersja z int' do int*' 59: error: initializing argument 1 of int binarne(int*, int)'

Wystarczy sobie przetłumaczyć i już wiadomo o co chodzi O_o, czy angielski jest aż taki trudny ??

0

a moglby ktos mi to zrobic aby dzialalo , bo od rana sie z tym mecze i juz nie mam sily...

0
  1. O błędzie z niezdeklarowanym nigdzie n już napisalem wcześniej.
  2. Wysłanie do funkcji tab[n] oznacza że wysyłasz tam WARTOŚĆ z komórki o indeksie n z danej tablicy (a nie całą tablicę tak jak chciałeś...), powinieneś mieć tam po prostu samo tab.

Mogę za 50zł poprawić ci ten kod, skoro jesteś zbyt leniwy żeby zrobic to samemu. Wybór należy do ciebie.

0

Dziekuje za pomoc ale juz zrobilem :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1