Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib> // подключаем qsort
- #include <cmath>
- #define N 27
- void fill(int* a){
- for (int i=0; i< N; i++){
- a[i] = -48 + rand()%(59+48+1); // от -48 до 59 включительно
- }
- }
- void printArr(int* a, char name){
- std::cout << "array "<< name << " :" <<std::endl;
- for (int i=0; i< N; i++){
- std::cout << " " << a[i] ;
- }
- std::cout << std::endl;
- }
- void printInfo(int* a, int indexFirstEven, int indexLastPositive, char name){
- std::cout << "FirstEven "
- << name << "[" << indexFirstEven <<"] = "
- << a[indexFirstEven] <<std::endl;
- std::cout << "LastPositive "
- << name << "[" << indexLastPositive <<"] = "
- << a[indexLastPositive] <<std::endl;
- }
- int getIndexFirstEven(int* a){
- for (int i=0; i< N; i++){
- if (a[i] %2 == 0) return i;
- }
- return -1;
- }
- int getIndexLastPositive(int* a){
- int res = -1;
- for (int i=0; i< N; i++){
- if (a[i]>=0) res = i;
- }
- return res;
- }
- int compare(const void * x1, const void * x2)
- {
- return ( *(int*)x1 - *(int*)x2 );
- }
- bool isPrime(int x){
- if (x % 2 == 0) return false;
- int sqrt_x = sqrt(x);
- for (int i=3; i <= sqrt_x; i=i+2){
- if (x % i == 0) return false;
- }
- return true;
- }
- void printPrimeIndexes(int* a, char name){
- std::cout << "indexes prime numbers in array "<< name << ": " ;
- int count = 0;
- for (int i=0; i< N; i++){
- if ( isPrime(a[i]) ) {
- std::cout << " " << i ;
- count++;
- }
- }
- std::cout << std::endl;
- std::cout << "count prime numbers "<< count << std::endl;
- }
- int main(){
- int* a = new int[N];
- int* b = new int[N];
- fill(a);
- fill(b);
- printArr(a, 'a');
- printArr(b, 'b');
- int indexFirstEvenA = getIndexFirstEven(a);
- int indexFirstEvenB = getIndexFirstEven(b);
- int indexLastPositiveA = getIndexLastPositive(a);
- int indexLastPositiveB = getIndexLastPositive(b);
- printInfo(a, indexFirstEvenA, indexLastPositiveA, 'a');
- printInfo(b, indexFirstEvenB, indexLastPositiveB, 'b');
- int* beg = a+indexFirstEvenA+1;
- int* end = a+indexLastPositiveA;
- qsort(beg, end-beg, sizeof(int), compare);
- beg = b+indexFirstEvenB+1;
- end = b+indexLastPositiveB;
- qsort(beg, end-beg, sizeof(int), compare);
- printArr(a, 'a');
- printArr(b, 'b');
- printPrimeIndexes(a, 'a');
- printPrimeIndexes(b, 'b');
- delete[] a;
- delete[] b;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement