Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Zadanie 1.
- Dany jest ciąg n liczb całkowitych. Napisz program , który wyszuka
- liczby bliźniacze w podanym ciągu a następnie wypisze znalezione liczby
- na ekranie komputera. Jeśli w podanym ciągu liczby bliźniacze nie
- istnieją to na ekranie powinien zostać wypisany stosowny komunikat.*/
- #include <iostream>
- #include <ctime>
- #include <vector>
- using namespace std;
- const int n = 100;
- bool pierwsza(int x) // ta funkcja stwierdza czy podana liczba x jest liczbą pierwszą (true) czy nie (false)
- {
- if(x < 2) // żadna liczba mniejsza od 2 nie jest liczbą pierwszą, więc od razu możemy je odrzucić
- return false;
- for(int i = 2; i*i <= x; ++i)
- if(x % i == 0) // jeśli liczba dzieli się przez i (naturalny dzielnik), to znaczy, że nie jest ona liczbą pierwszą
- return false;
- return true;
- }
- bool blizniacza(int x)
- {
- if(pierwsza(x) && pierwsza(x+2))
- return true;
- return false;
- }
- struct Para
- {
- int a, b;
- };
- 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
- {
- for(unsigned i = 0; i < tablica.size(); ++i)
- if(tablica[i].a == wartosc)
- return true;
- return false;
- }
- void blizniacze(int* ciag) //po co wskaźnik - to jest po prostu wskaźnikowy zapis tablicy ciag
- {
- vector<Para> blizniacze; // tablica dynamiczna przechowująca pary liczb bliźniaczych
- Para para;
- for(int i = 0; i < n; ++i)
- if(blizniacza(ciag[i])) // sprawdza czy liczba ciag[i] należy do zbioru liczb bliźniaczych
- {
- for(int j = 0; j < n; ++j)
- 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)
- if(!juz_jest(blizniacze, ciag[i])) // ! oznacza przeczenie
- {
- para.a = ciag[i];
- para.b = ciag[j];
- blizniacze.push_back(para); // dodanie pary liczb bliźniaczych do tablicy dynamicznej jako ostatni element
- }
- }
- if(blizniacze.size() == 0)
- cout << "Nie znaleziono zadnych liczb blizniaczych\n";
- for(unsigned i = 0; i < blizniacze.size(); ++i)
- {
- cout << blizniacze[i].a << '\t' << blizniacze[i].b << endl;
- }
- }
- int main()
- {
- srand(static_cast<unsigned>(time(nullptr)));
- int ciag[n];
- for(int i = 0; i < n; ++i)
- ciag[i] = rand() % 100 + 1;
- blizniacze(ciag);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment