MeehoweCK

Untitled

May 10th, 2020
1,213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.67 KB | None | 0 0
  1. /*Zadanie 1.
  2. Dany jest ciąg n liczb całkowitych. Napisz program , który wyszuka
  3. liczby bliźniacze w podanym ciągu a następnie wypisze znalezione liczby
  4. na ekranie komputera. Jeśli w podanym ciągu liczby bliźniacze nie
  5. istnieją to na ekranie powinien zostać wypisany stosowny komunikat.*/
  6.  
  7. #include <iostream>
  8. #include <ctime>
  9. #include <vector>
  10.  
  11. using namespace std;
  12.  
  13. const int n = 100;
  14.  
  15. bool pierwsza(int x)   // ta funkcja stwierdza czy podana liczba x jest liczbą pierwszą (true) czy nie (false)
  16. {
  17.     if(x < 2)       // żadna liczba mniejsza od 2 nie jest liczbą pierwszą, więc od razu możemy je odrzucić
  18.         return false;
  19.     for(int i = 2; i*i <= x; ++i)
  20.         if(x % i == 0)      // jeśli liczba dzieli się przez i (naturalny dzielnik), to znaczy, że nie jest ona liczbą pierwszą
  21.             return false;
  22.     return true;
  23. }
  24.  
  25. bool blizniacza(int x)
  26. {
  27.     if(pierwsza(x) && pierwsza(x+2))
  28.         return true;
  29.     return false;
  30. }
  31.  
  32. struct Para
  33. {
  34.     int a, b;
  35. };
  36.  
  37. bool juz_jest(vector<Para> tablica, int wartosc)       // ta funkcja określa czy podana para liczb mieści się już w tablicy par liczb bliźniaczych
  38. {
  39.     for(unsigned i = 0; i < tablica.size(); ++i)
  40.         if(tablica[i].a == wartosc)
  41.             return true;
  42.     return false;
  43. }
  44.  
  45. void blizniacze(int* ciag)      //po co wskaźnik - to jest po prostu wskaźnikowy zapis tablicy ciag
  46. {
  47.     vector<Para> blizniacze;        // tablica dynamiczna przechowująca pary liczb bliźniaczych
  48.     Para para;
  49.  
  50.     for(int i = 0; i < n; ++i)
  51.         if(blizniacza(ciag[i]))     // sprawdza czy liczba ciag[i] należy do zbioru liczb bliźniaczych
  52.         {
  53.             for(int j = 0; j < n; ++j)
  54.                 if(ciag[j] == (ciag[i] + 2))        // to nie są dwa ciągi, tylko sprawdzenie czy obie liczby bliźniacze znajdują się w podanej tablicy (np. jeśli jest 5 to czy też jest 7)
  55.                     if(!juz_jest(blizniacze, ciag[i]))      //  ! oznacza przeczenie
  56.                     {
  57.                         para.a = ciag[i];
  58.                         para.b = ciag[j];
  59.                         blizniacze.push_back(para);     // dodanie pary liczb bliźniaczych do tablicy dynamicznej jako ostatni element
  60.                     }
  61.         }
  62.  
  63.     if(blizniacze.size() == 0)
  64.         cout << "Nie znaleziono zadnych liczb blizniaczych\n";
  65.     for(unsigned i = 0; i < blizniacze.size(); ++i)
  66.     {
  67.         cout << blizniacze[i].a << '\t' << blizniacze[i].b << endl;
  68.     }
  69. }
  70.  
  71. int main()
  72. {
  73.     srand(static_cast<unsigned>(time(nullptr)));
  74.     int ciag[n];
  75.     for(int i = 0; i < n; ++i)
  76.         ciag[i] = rand() % 100 + 1;
  77.  
  78.  
  79.     blizniacze(ciag);
  80.  
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment