Znajdowanie elementu w ciągu liczbowym


//*************************************************************************

//           PROGRAM PRZESZUKUJE TABLIBCE W CELU ZNALEZIENIA ZADANEGO ELEMENTU

//*************************************************************************

 

#include<iostream>

 

using namespace std;

 

 

 int main()

 {

      

      int n;     // ilosc wczytanych liczb do tablicy

      int a[n];  // tablica na posortowane rosnaco liczby

      int x;     // szukany element w ciagu liczbowym - w tablicy

      int l;     // indeks lewego kranca tablicy- lewego kranca ciagu liczb

      int p;     // indeks prawego kranca tablicy- prawego kranca ciagu liczb

      int sr;    // indeks srodkowego elementu tablicy

      

      cin>>n;                   // wprowadzenie ilosci liczb

      

      for (int i=0; i<n; i++)   //wprowadzanie danych do tablicy jednowymiarowej

                                           // dane wprowadzane sa juz posortowane rosnaco

      {

      cin>>a[i];

      }

         

      cin>>x;         // wprowadzenie szukanej wartosci liczby   

      l=0;               // lewy kraniec ma indeks 0 bo w tablicy liczby liczymy od 0

      p=n-1;          // prawy kraniec przedzialu ma wartosc koncowego indeksu tablicy

      

  while(l<=p)     // dopóki lewy kraniec przedziału jest mniejszy lub równy prawemu

  {

  sr=(l+p)/2;

 

  if (a[sr]==x)

    { 

    cout<<endl<<"jest w ciagu wartosc "<<x<<" na "<<sr+1<<" miejscu"<<endl;

    break;

          }

    

      if (a[sr]<x)

      l=sr+1;

    

      if (a[sr]>x)

      p=sr-1;

  }

  

 if (l>p)

 cout<<"nie ma "<<endl;  

  

  cin.get();

  cin.ignore();

  return 0;

 }