Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <time.h>
- using namespace std;
- int Scal(int A[], int p, int q, int r);
- int SortujPrzezScalanie(int A[], int p, int r);
- int szukajPary (int *A, int l, int p, int szukana);
- int main() {
- int n = 0, i = 0, szukana = 0, j = 0;
- srand(time(NULL));
- cout<<"Podaj ilosc elementow tablicy: ";
- cin>>n;
- int A[n] = {0};
- cout<<"\nPrawda oznacza, że podana suma występuje, fałsz oznacza że podana suma nie występuje.";
- cout<<"\nTablica przed posortowaniem: \n";
- while(j < 5){
- cout<<"Przebieg "<<j+1<<endl;
- for(i = 0; i < n; i++){
- A[i] = rand() % 100 + 1;
- cout<<A[i]<<" ";
- }
- SortujPrzezScalanie(A,0,n-1);
- cout<<"\nTablica po posortowaniu: \n";
- for(i=0; i<n; i++){
- cout<<A[i]<<" ";
- }
- szukana = rand() % 250 + 1;
- cout<<"\nSzukana suma to: "<<szukana;
- if(szukajPary(A,0,n-1, szukana))
- cout<<"\nPRAWDA"<<endl;
- else
- cout<<"\nFAŁSZ"<<endl;
- j++;
- }
- return 0;
- }
- int szukajPary (int *A, int l, int p, int szukana) {
- while (l < p) {
- if (A[l] + A[p] == szukana) {
- cout<<"\nZmienne dajace ta sume znajduja się na pozycjach "<<l<<" ("<<A[l]<<") i, "<<p<<" ("<<A[p]<<")";
- return 1;
- }
- else if (A[l] + A[p] < szukana)
- l++;
- else
- p--;
- }
- return 0;
- }
- int Scal(int A[], int p, int q, int r){
- int n1, n2, i, j, k;
- //n1 = rozmiar lewej tablicy
- //n2 = rozmiar prawej tablicy
- n1 = q - p + 1;
- n2 = r - q;
- int L[n1],R[n2];
- //Inicjalizacja wartosci lewej tablicy
- for(i = 0; i < n1; i++){
- L[i]=A[p+i];
- }
- //Inicjalizacja wartosci prawej tablicy
- for(j = 0; j<n2; j++){
- R[j]=A[q+j+1];
- }
- i = 0, j = 0;
- //Porownywanie i laczenie w nowa posortowana tablice
- for(k=p; i < n1 && j < n2;k++){
- if(L[i]<R[j])
- A[k]=L[i++];
- else
- A[k]=R[j++];
- }
- //Jezeli prawa ma wiecej elementow niz lewa, pozostalosci lewej zostana wlozone do A[]
- while(i<n1)
- A[k++]=L[i++];
- while(j<n2)
- A[k++] = R[j++];
- }
- int SortujPrzezScalanie(int A[], int p, int r){
- int q;
- if(p<r){
- q=(p+r)/2;
- SortujPrzezScalanie(A,p,q);
- SortujPrzezScalanie(A,q+1,r);
- Scal(A,p,q,r);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement