Advertisement
wintest

МАТРИЦА: най-малка нечетна проста сума по колони

Jan 15th, 2017
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <clocale>
  3. #include <ctime>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. #define M 5
  9. #define N 5
  10.  
  11. int minPrimeEvenSumOfColumn(int array[][N], size_t rows);
  12. void fillTheArray(int array[][N], size_t rows);
  13. void printTheArray(int array[][N], size_t rows);
  14.  
  15. int main(){
  16.     setlocale(LC_ALL, "Bulgarian");
  17.     srand(time(NULL));
  18.  
  19.     int array[M][N];
  20.     fillTheArray(array, M);
  21.     printTheArray(array, M);
  22.     cout << endl;
  23.     if (minPrimeEvenSumOfColumn(array, M)) cout << minPrimeEvenSumOfColumn(array, M);
  24.     else cout << "Няма сума по колона отгваряща на изискванията!" << endl;
  25.     return 0;
  26. }
  27. // Н) да се намери колоната, която има сума на елементите нечетно, просто число, най-малко сред сума на елементите от останалите колони;
  28. int minPrimeEvenSumOfColumn(int array[][N], size_t rows){
  29.     int sumOfColumn=0;
  30.     int minPrimeSum = INT_MAX;
  31.     int colIndex=INT_MAX;
  32.         for (size_t j = 0; j < N; j++){
  33.             for (size_t i = 0; i < M; i++){
  34.                 sumOfColumn += array[i][j];
  35.         }
  36.             if (sumOfColumn%2 !=0)
  37.             {
  38.                 bool isPrime = true;
  39.                 for (size_t n = 2; n <= sumOfColumn / 2; n++)
  40.                 {
  41.                     if (sumOfColumn % n == 0)
  42.                     {
  43.                         isPrime = false;
  44.                         break;
  45.                     }
  46.                 }
  47.                 if (isPrime) {
  48.                     if (minPrimeSum > sumOfColumn){
  49.                         minPrimeSum = sumOfColumn;
  50.                         colIndex = j;
  51.                     }
  52.                 }
  53.             }
  54.             sumOfColumn = 0;
  55.     }
  56.         if (colIndex!=INT_MAX)return colIndex;
  57.         else return 0;
  58. }
  59.  
  60. void fillTheArray(int array[][N], size_t rows){
  61.     for (size_t i = 0; i < M; i++)
  62.     {
  63.         for (size_t j = 0; j < N; j++){
  64.             array[i][j] = rand() % 10 ;
  65.  
  66.         }
  67.     }
  68. }
  69. //принтирам масив
  70. void printTheArray(int array[][N], size_t rows){
  71.     cout << "Оригиналната матрица е това : " << endl;
  72.  
  73.     for (size_t i = 0; i < M; i++)
  74.     {
  75.         for (size_t j = 0; j < N; j++){
  76.             cout << array[i][j] << "\t";
  77.         }
  78.         cout << endl;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement