Advertisement
Guest User

Untitled

a guest
Nov 17th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>  // подключаем qsort
  3. #include <cmath>
  4.  
  5. #define N 27
  6.  
  7. void fill(int* a){
  8.   for (int i=0; i< N; i++){
  9.      a[i] = -48 + rand()%(59+48+1); // от -48 до 59 включительно
  10.   }
  11. }
  12.  
  13. void printArr(int* a, char name){
  14.   std::cout << "array "<< name << " :" <<std::endl;
  15.   for (int i=0; i< N; i++){
  16.      std::cout << " " << a[i] ;
  17.   }
  18.   std::cout << std::endl;
  19. }
  20.  
  21. void printInfo(int* a, int indexFirstEven, int indexLastPositive,  char name){
  22.   std::cout << "FirstEven "
  23.             << name << "[" << indexFirstEven <<"] = "
  24.             <<  a[indexFirstEven] <<std::endl;
  25.                                  
  26.   std::cout << "LastPositive "
  27.             << name << "[" << indexLastPositive <<"] = "
  28.             <<  a[indexLastPositive] <<std::endl;                                  
  29. }
  30.  
  31. int getIndexFirstEven(int* a){
  32.   for (int i=0; i< N; i++){
  33.      if (a[i] %2 == 0)  return i;
  34.   }
  35.   return -1;
  36. }
  37.  
  38. int getIndexLastPositive(int* a){
  39.   int res = -1;
  40.   for (int i=0; i< N; i++){
  41.      if (a[i]>=0)  res = i;
  42.   }
  43.   return res;
  44. }
  45.  
  46. int compare(const void * x1, const void * x2)
  47. {
  48.   return ( *(int*)x1 - *(int*)x2 );
  49. }
  50.  
  51. bool isPrime(int x){
  52.     if (x % 2 == 0) return false;
  53.     int sqrt_x = sqrt(x);
  54.     for (int i=3; i <= sqrt_x; i=i+2){
  55.         if (x % i == 0) return false;
  56.     }
  57.     return true;    
  58. }
  59.  
  60. void printPrimeIndexes(int* a, char name){
  61.   std::cout << "indexes prime numbers in array "<< name << ": " ;
  62.   int count = 0;
  63.   for (int i=0; i< N; i++){
  64.      if ( isPrime(a[i]) ) {
  65.         std::cout << " " << i ;
  66.         count++;
  67.      }
  68.   }
  69.   std::cout << std::endl;
  70.   std::cout << "count prime numbers "<< count << std::endl;
  71. }
  72.  
  73.  
  74. int main(){
  75.    int* a = new int[N];
  76.    int* b = new int[N];
  77.    fill(a);  
  78.    fill(b);
  79.    
  80.    printArr(a, 'a');  
  81.    printArr(b, 'b');
  82.    
  83.    int indexFirstEvenA = getIndexFirstEven(a);
  84.    int indexFirstEvenB = getIndexFirstEven(b);
  85.    
  86.    int indexLastPositiveA = getIndexLastPositive(a);
  87.    int indexLastPositiveB = getIndexLastPositive(b);
  88.    
  89.    printInfo(a, indexFirstEvenA, indexLastPositiveA, 'a');
  90.    printInfo(b, indexFirstEvenB, indexLastPositiveB, 'b');
  91.    
  92.    int* beg = a+indexFirstEvenA+1;
  93.    int* end = a+indexLastPositiveA;
  94.    qsort(beg, end-beg, sizeof(int), compare);
  95.    
  96.    beg = b+indexFirstEvenB+1;
  97.    end = b+indexLastPositiveB;
  98.    qsort(beg, end-beg, sizeof(int), compare);
  99.    
  100.    printArr(a, 'a');  
  101.    printArr(b, 'b');
  102.    
  103.    printPrimeIndexes(a, 'a');
  104.    printPrimeIndexes(b, 'b');
  105.    
  106.    delete[] a;
  107.    delete[] b;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement