Guest User

Untitled

a guest
Apr 24th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. /* Файл: 25 чисел(матрица 5 на 5). Заменить в матрице все цифры 1 на 0.
  7. Отсортировать столбцы матрицы по количеству простых чисел */
  8.  
  9. int countprimes(int matrix[]); //функция считающая простые числа в строке
  10. const int size = 5;
  11.  
  12. int main(int argc, char** argv) {
  13. setlocale(LC_ALL, "Russian");
  14. int matrix[size][size];
  15.  
  16. ifstream file("in.txt");
  17.  
  18. // Вывод массива
  19. cout<<"Исходный массив"<<endl;
  20. for (int i = 0; i < size; i++) {
  21. for (int j = 0; j < size; j++) {
  22. file >> matrix[i][j];
  23. cout << matrix[i][j] << " ";
  24. }
  25. cout << endl;
  26. }
  27. cout << endl;
  28. file.close();
  29.  
  30. //Замена 1 на 0
  31. cout<<"Заменим единицы нулями"<<endl;
  32. for (int i = 0; i < size; i++) {
  33. for (int j = 0; j < size; j++) {
  34. if (matrix[i][j]==1) matrix[i][j]=0;
  35. cout << matrix[i][j] << " ";
  36. }
  37. cout << endl;
  38. }
  39. cout << endl;
  40.  
  41.  
  42. //Сортировка пузырьком
  43. for (int i = 0; i < size - 1; ++i) {
  44. for (int j = 0; j < size - i - 1; j++) {
  45. if (countprimes(matrix[i]) < countprimes(matrix[i + 1])) {
  46. swap(matrix[i], matrix[i + 1]);
  47. }
  48. }
  49. }
  50.  
  51. //Вывод после сортировки
  52. cout<<"Отсортированный массив"<<endl;
  53. for (int i = 0; i < size; i++) {
  54. for (int j = 0; j < size; j++) {
  55. cout << matrix[i][j] << " ";
  56. }
  57. cout << endl;
  58. }
  59. }
  60.  
  61.  
  62.  
  63. int countprimes(int matrix[]){
  64. int count(0);
  65. for (int i = 0; i < size; i++) {
  66. if (matrix[i] == 2 || matrix[i] == 3 ) count++; //Если 2 или 3, то простое
  67. for (int k = 2; k<= matrix[i]/2; k++) {
  68. if (matrix[i] % k == 0 || matrix[i]==0) break; //Если кратно, останавливаем цикл, число не простое
  69. if (k >= matrix[i] / 2) count++; //Если проверили все кратности и не вышли из цикла, число простое
  70. }
  71. }
  72. return count;
  73. }
  74.  
  75. Исходный массив
  76. 1 23 56 4 31
  77. 44 34 11 8 41
  78. 66 22 1 35 67
  79. 89 21 31 65 73
  80. 3 9 1 27 17
  81.  
  82. Заменим единицы нулями
  83. 0 23 56 4 31
  84. 44 34 11 8 41
  85. 66 22 0 35 67
  86. 89 21 31 65 73
  87. 3 9 0 27 17
  88.  
  89. Отсортированный массив
  90. 0 23 56 4 31
  91. 44 34 11 8 41
  92. 89 21 31 65 73
  93. 3 9 0 27 17
  94. 66 22 0 35 67
Add Comment
Please, Sign In to add comment