- #include <iostream>
- #include<cstdlib>
- #include<time.h>
- #include<math.h>
- #include <algorithm>
- using namespace std;
- void lokujPamiec1D(int *&tab,int n)
- {
- tab=new int[n];
- }
- void lokujPamiec2D(int **&tab,int w,int k)
- {
- int i;
- tab=new int*[w];
- for(i=0; i<w; i++)
- {
- tab[i]=new int[k];
- }
- }
- void wypelnijTablice1D(int *tab,int n,int a,int b)
- {
- int i;
- for(i=0; i<n; i++)
- {
- tab[i]=rand()%(b-a+1)+a;
- }
- }
- void wypelnijTablice2D(int **tab,int w,int k, int a, int b)
- {
- int i,j;
- for(i=0; i<w; i++)
- {
- for(j=0; j<k; j++)
- {
- tab[i][j]=rand()%(b-a+1)+a;
- }
- }
- }
- void usunTablice1D(int *&tab,int n)
- {
- delete []tab;
- }
- void usunTablice2D(int **&tab,int w,int k)
- {
- int i;
- for(i=0; i<w; i++)
- {
- delete []tab[i];
- }
- delete []tab;
- }
- void wyswietlTablice1D(int *tab,int n)
- {
- int i;
- for(i=0; i<n; i++)
- {
- cout << tab[i] << endl;
- }
- }
- void wyswietlTablice2D(int **tab,int w,int k)
- {
- int i,j;
- for(i=0; i<w; i++)
- {
- for(j=0; i<k; j++)
- {
- cout << tab[i][j] << endl;
- }
- }
- }
- void sortowanieBabelkowe(int *tab, int rozmiar, int tryb)
- {
- if(tryb==1) //rosnaco//
- {
- for(int i=0; i<rozmiar-1; i++)
- {
- for(int j=0; j<rozmiar-1; j++)
- {
- if(tab[j]>tab[j+1])
- swap(tab[j],tab[j+1]);
- }
- }
- }
- if(tryb==0)//malejaco//
- {
- for(int i=1; i<=rozmiar-1; i++)
- {
- for(int j=1; j<=rozmiar-1; j++)
- {
- if(tab[j]<tab[j+1])
- swap(tab[j],tab[j+1]);
- }
- }
- }
- }
- void sortowaniePrzezWybor(int *tab, int n, int tryb)
- {
- if(tryb==1) //rosnaco//
- {
- for(int i= 0; i<n; i++)
- {
- int pmin; //wartosc od ktorego sortuje//
- pmin = i;
- for(int j = i + 1; j < n; j++) //petla do szukania najmniejszego//
- if(tab[j] < tab[pmin]) //tab pmin, el pierwszy z nieposortowanego//
- {
- pmin = j;
- swap(tab[pmin], tab[i]);
- }
- }
- }
- if(tryb==0) //malejaco//
- {
- for(int i= 0; i<n; i++)
- {
- int pmin; //wartosc od ktorego sortuje//
- pmin = i;
- for(int j = i + 1; j < n; j++) //petla do szukania najwiekszego//
- if(tab[j] > tab[pmin]) //tab pmin, el pierwszy z nieposortowanego//
- {
- pmin = j;
- swap(tab[pmin], tab[i]);
- }
- }
- }
- }
- void sortowaniePrzezWstawianie(int *tab,int n,int tryb)
- {
- if(tryb==1) //rosnaco//
- {
- int pom, j;
- for(int i=1; i<n; i++)
- {
- //wstawienie elementu w odpowiednie miejsce
- pom = tab[i]; //ten element bêdzie wstawiony w odpowiednie miejsce
- j = i-1;
- //przesuwanie elementów wiêkszych od pom
- while(j>=0 && tab[j]>pom)
- {
- swap(tab[j+1],tab[j]); //przesuwanie elementów
- j--;
- }
- }
- }
- if(tryb==0) //malejaco//
- {
- int pom, j;
- for(int i=1; i<n; i++)
- {
- //wstawienie elementu w odpowiednie miejsce
- pom = tab[i]; //ten element bêdzie wstawiony w odpowiednie miejsce
- j = i-1;
- //przesuwanie elementów wiêkszych od pom
- while(j>=0 && tab[j]<pom)
- {
- swap(tab[j+1],tab[j]); //przesuwanie elementów
- j--;
- }
- }
- }
- }
- void sortowanieBabelkowe2D(int **tab,int w, int k,int tryb)
- {
- if(tryb==1){
- for(int j=0;j<k;j++)//sortowanie bąbelkowe
- {
- for(int i=0;i<w-1;i++)
- {
- if(tab[i][j]>tab[i+1][j])
- swap(tab[i][j],tab[i+1][j]);
- }
- }
- }
- if(tryb==0)
- {
- for(int j=0;j<k;j++)//sortowanie bąbelkowe
- {
- for(int i=0;i<w-1;i++)
- {
- if(tab[i][j]<tab[i+1][j])
- swap(tab[i][j],tab[i+1][j]);
- }
- }
- }
- }
- void zadanie1()
- {
- int *tab;
- int n,a,b,tryb;
- cout << "Podaj rozmiar, zakres wypelniania, i sposob sortowania(1-rosnaco,0-malejaco)" << endl;
- cin >> n >> a >> b >> tryb;
- lokujPamiec1D(tab,n);
- wypelnijTablice1D(tab,n,a,b);
- wyswietlTablice1D(tab,n);
- sortowanieBabelkowe(tab,n,tryb);
- wyswietlTablice1D(tab,n);
- usunTablice1D(tab,n);
- }
- void zadanie2()
- {
- int *tab;
- int n,a,b,tryb;
- cout << "Podaj rozmiar, zakres wypelniania, i sposob sortowania(1-rosnaco,0-malejaco)" << endl;
- cin >> n >> a >> b >> tryb;
- lokujPamiec1D(tab,n);
- wypelnijTablice1D(tab,n,a,b);
- wyswietlTablice1D(tab,n);
- sortowaniePrzezWybor(tab,n,tryb);
- wyswietlTablice1D(tab,n);
- usunTablice1D(tab,n);
- }
- void zadanie3()
- {
- int *tab;
- int n,a,b,tryb;
- cout << "Podaj rozmiar, zakres wypelniania, i sposob sortowania(1-rosnaco,0-malejaco)" << endl;
- cin >> n >> a >> b >> tryb;
- lokujPamiec1D(tab,n);
- wypelnijTablice1D(tab,n,a,b);
- wyswietlTablice1D(tab,n);
- sortowaniePrzezWstawianie(tab,n,tryb);
- wyswietlTablice1D(tab,n);
- usunTablice1D(tab,n);
- }
- void zadanie4()
- {
- int **tab;
- int a,b,tryb,w,k;
- cout << "Podaj rozmiar tablicy dwuwymiarowej, zakres wypelniania, i sposob sortowania(1-rosnaco,0-malejaco)" << endl;
- cin >> w >> k >> a >> b >> tryb;
- lokujPamiec2D(tab,w,k);
- wypelnijTablice2D(tab,w,k,a,b);
- wyswietlTablice2D(tab,w,k);
- sortowanieBabelkowe2D(tab,w,k,tryb);
- wyswietlTablice2D(tab,w,k);
- usunTablice2D(tab,w,k);
- }
- int main()
- {
- srand(time(NULL));
- int menu;
- do
- {
- cout << "Wybierz zadanie:" << endl;
- cin>> menu;
- switch(menu)
- {
- case 1:
- zadanie1();
- break;
- case 2:
- zadanie2();
- break;
- case 3:
- zadanie3();
- break;
- case 4:
- zadanie4();
- break;
- }
- }
- while(menu!=5);
- return 0;
- }