#include

using namespace std;


const int N = 5;

int a[N];


void WprowadzDane()

{

for (unsigned i = 0; i < N; i++)

{

cout<< "Podaj dana nr " << i << ": ";

cin >> a[i];

}

}

int ZnajdzDana(int wartosc)

{


int poczatek, koniec, srodek;

poczatek = 0;

koniec = N - 1;

do

{

srodek = (poczatek+koniec)/2;

if(a[srodek] == wartosc)

return srodek;

else

if(wartosc < a[srodek])

koniec = srodek -1;

else

poczatek = srodek +1;



}


while(poczatek <=koniec);

return -1;

}

int main ()

{

int wartosc, pozycja;

WprowadzDane();

cout << "Podaj dana do wyszukania: ";

cin >> wartosc;

pozycja = ZnajdzDana(wartosc);

if(pozycja >= 0)

cout << "Znaleziono wartosc " << wartosc << " na pozycji " << pozycja << " (pozycje liczone sa od 0)" << endl;

else

cout << "Nie znaleziono wartosci " << wartosc << endl;



return 0;

}



To jest kod w c++ do wyszukiwania liczby ze zbioru 5 liczb. Podajemy 5 liczb i podajemy jedną z tych 5 i wylicza nam na którym miejscu (licząc od miejsca 0) jest ta liczba w ciągu podanym wcześniej. Możemy tylko podawać liczby w zbiorze uporządkowanym 1,2,3,4,5. Trzeba zmienić program, aby dział też na zbiór liczb nieuporządkowanych np: na taki: 5,4,3,2,1 /2,4,3,9,8 !! Na 50 pnkt

Najlepiej aby zrobić tak: podaj pięć liczb, program je ustawia od najmniejszej do największej i szuka liczby podanej.


Odpowiedź :

Odpowiedź:

#include <iostream>

using namespace std;

const int N = 5;

int a[N];

void WprowadzDane() {

   for (unsigned i = 0; i < N; i++) {

       cout << "Podaj dana nr " << i << ": ";

       cin >> a[i];

   }

}

int ZnajdzDana(int wartosc) {

   int index = -1;

   for(int i = 0; i < N; i++){

       if(a[i] == wartosc){

           index = i;

       }

   }

   return index;

}

int main() {

   int wartosc, pozycja;

   WprowadzDane();

   cout << "Podaj dana do wyszukania: ";

   cin >> wartosc;

   pozycja = ZnajdzDana(wartosc);

   if (pozycja >= 0)

       cout << "Znaleziono wartosc " << wartosc << " na pozycji " << pozycja << " (pozycje liczone sa od 0)" << endl;

   else

       cout << "Nie znaleziono wartosci " << wartosc << endl;

   

   return 0;

}

Wyjaśnienie:

Ten program co wysłałeś to wyszukiwanie binarne i przez to, że jest tablica uporządkowana to czas wyszukiwania jest logarytmiczny, jak chce się zrobić w nieposortowanej to czas wyszukiwania będzie liniowy

Można też to zrobić w jednej linijce korzystając z stla

Viz Inne Pytanie