Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.20 KB | None | 0 0
  1. // PAIP IC1 10B LAB05
  2. // LUKASZ KOLER
  3. // lkoler@wi.zut.edu.pl
  4.  
  5. #define MAX 100
  6. #include <iostream>
  7. #include <string>
  8. #include <cstdlib>
  9. #include <time.h>
  10. #include <iomanip>
  11. #include <stdio.h>
  12. using namespace std;
  13.  
  14. int Search_nat (int N, int A[],  int x)
  15. {
  16.     cout<<endl<<"Wyszukiwanie naturalne:"<<endl;
  17.     int licznik=0;
  18. for(int i = 0; i <= N; i++)
  19.  {
  20.  licznik++;
  21.  if(x == A[i]){
  22.       cout<<"Liczba "<<x<<" zostala znaleziona na pozycji: "<<i+1;
  23.       cout<<endl<<"Licznik iteracji: "<<licznik;
  24.       return(i);
  25.       };
  26.  if(x < A[i]){
  27.       cout<<"Liczba nie znajduje sie w tablicy";
  28.       return(0); //brak element x w tablicy A[]
  29.       };
  30.  }
  31. return(0);
  32. }
  33.  
  34. int Search_bin(int l, int p, int x, int A[])
  35. {
  36.   cout<<endl<<"Wyszukiwanie binarne:"<<endl;
  37.   int sr;
  38.   int licznik=0;
  39.  
  40. if (x < A[0]) { cout<<"Liczba "<<x<<" nie znajduje sie w tablicy"<<endl<<"Licznik iteracji: "<<licznik; return(0); }
  41. if (x > A[MAX-1]) { cout<<"Liczba "<<x<<" nie znajduje sie w tablicy"<<endl<<"Licznik iteracji: "<<licznik; return(0); }
  42. if (x == A[0]) { cout<<"Liczba "<<x<<" znajduje sie na pozycji: 0"<<endl<<"Licznik iteracji: "<<licznik; return(0); }
  43. if (x == A[MAX-1]) { cout<<"Liczba "<<x<<" znajduje sie na pozycji: "<<MAX<<endl<<"Licznik iteracji: "<<licznik; return(0);}
  44.  
  45.   while(l<=p)
  46.   {
  47.     licznik++;
  48.     sr = (l + p)/2;
  49.  
  50.     if(A[sr] == x){
  51.       cout<<"Liczba "<<x<<" znajduje sie w tablicy na pozycji: "<<sr+1;
  52.       cout<<endl<<"Licznik iteracji: "<<licznik;
  53.       return(0);
  54.       }
  55.  
  56.     if(A[sr] > x)
  57.       p = sr - 1;
  58.     else
  59.       l = sr + 1;
  60. }
  61.  
  62.   return -1; //zwracamy -1, gdy nie znajdziemy elementu
  63. }
  64.  
  65. int main() {
  66.     int tab[MAX];
  67.     srand(time(NULL));
  68.     int b = 0;
  69.     int metoda;
  70.     int trafione = 0;
  71.     int tPozycja = 0;
  72.     int lPorownania = 0;
  73.     int lZamiany = 0;
  74.     int x = MAX;
  75.    
  76.     // TABLICA LOSOWA
  77.     for(int i=0;i<MAX;i++){
  78.              tab[i] = rand()%(4*MAX-1)+0;
  79.     }
  80.    
  81.  
  82.  
  83.     /* od MIN do MAX
  84.     for(int i=0;i<MAX;i++){
  85.              tab[i] = i;
  86.              //tab[i] = rand()%(4*MAX-1)+0;
  87.     }
  88.     */
  89.    
  90.     /* od MAX do MIN
  91.     for(int i=0;i<MAX;i++){
  92.              tab[i] = x;
  93.              x--;
  94.     }
  95.     */
  96.    
  97.     /*
  98.     // WYSWIETLANIE TABLICY LOSOWEJ
  99.     for(int i=0;i<MAX;i++){
  100.             cout<<left<<setw(10)<<tab[i];
  101.             if((i+1)%5==0)
  102.             cout<<endl;
  103.     }
  104.     */
  105.      
  106.      // SORTOWANIE BĄBELKOWE
  107.  
  108.     for(int i=0; i<MAX-1; i++)
  109.         for(int j=0; j<MAX-1-i; j++)
  110.         {
  111.             lPorownania=lPorownania+1;
  112.                 if(tab[j] > tab[j+1])
  113.                 {
  114.                     swap(tab[j], tab[j+1]);
  115.                     lZamiany=lZamiany+1;
  116.                 }
  117.         }
  118.  
  119. // WYSWIETLANIE POSORTOWANEJ TABLICY
  120.  
  121.     cout<<"Sortowanie tablicy algorytmem babelkowym od najmniejszej do najwiekszej: "<<endl;
  122.  
  123.     for(int i=0; i<MAX; i++)
  124.         cout <<setw(5)<<tab[i];
  125.             cout<<endl<<endl;
  126. /*
  127. // WYSWIETLANIE ODWROTNIE POSORTOWANEJ TABLICY
  128.  
  129.    cout<<"Sortowanie tablicy algorytmem babelkowym od najwiekszej do najmniejszej: "<<endl;
  130.  
  131.     for(int i=MAX-1; i>0; i--)
  132.          cout<<setw(5)<<tab[i];
  133.               cout<<endl<<endl;
  134.  */            
  135.              
  136.     cout<<endl<<endl<<"Wpisz liczbe do sprawdzenia: "<<endl<<endl;
  137.     cin>>b;
  138.    
  139.     cout<<endl<<"Wybierz metode wyszukiwania:"<<endl<<"1 - naturalne"<<endl<<"2 - binarne"<<endl;
  140.    
  141.     cin>>metoda;
  142.    
  143.     if(metoda == 1)
  144.     Search_nat(MAX,tab,b);
  145.    
  146.     if(metoda == 2)
  147.     Search_bin (0, MAX,  b, tab);
  148.    
  149.     /*
  150.     for(int i=0;i<MAX;i++){
  151.                     if(tab[i] == b) {
  152.                     tPozycja = i;
  153.                     trafione++;
  154.                     }
  155.      }
  156.      
  157.      if(trafione>0) {
  158.      cout<<"Liczba, ktora podales ("<<b<<") znajduje sie w tablicy.";
  159.      cout<<endl<<"Numer pozycji: "<<tPozycja<<endl<<endl<<endl;
  160.      }
  161.      else
  162.      cout<<"Liczba, ktora podales ("<<b<<") NIE znajduje sie w tablicy."<<endl<<endl;
  163.      */
  164.  
  165. //cout<<"Liczba wykonanych operacji porownania elementow: "<<lPorownania;
  166. //cout<<endl<<"Liczba wykonanych zamian miejscami elementow: "<<lZamiany;
  167.      
  168.  
  169. cout<<endl<<endl<<endl;
  170. system("pause");
  171. return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement