Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. using namespace std;
  5. struct sizer{
  6. int str, stolb;
  7. };
  8.  
  9. int lenOfNumer(int n){
  10. int c = 0;
  11. while(n){
  12. n/=10;
  13. c++;
  14. }
  15. return c;
  16. }
  17.  
  18. bool isPrime(int n){
  19. if(n % 2 == 0 && n != 2)
  20. return false;
  21.  
  22. for(int i = 3; i*i < n; i+=2)
  23. if(n%i == 0)
  24. return false;
  25. return true;
  26. }
  27.  
  28. bool isPrimeToK(int n, int k){
  29. for(int i = 2; i < k && i*i<n; i++)
  30. if(n%i == 0)
  31. return false;
  32. return true;
  33. }
  34.  
  35. void printLine(int a[], int size);
  36.  
  37. void sortByArithm(int ** matrix, sizer size){
  38. int * coeffo = new int[size.str];
  39. int sum;
  40.  
  41. for(int i = 0; i < size.str; i++){
  42. sum = 0;
  43. for(int j = 0; j < size.stolb; j++){
  44. sum += matrix[i][j];
  45. }
  46. coeffo[i] = sum;
  47. }
  48.  
  49. bool t = true;
  50. int pp=size.str-2;
  51. while(t){
  52. t = false;
  53. for(int j = 0; j <=pp; j++){
  54. if(coeffo[j] > coeffo[j+1]){
  55. swap(coeffo[j], coeffo[j+1]);
  56. swap(matrix[j], matrix[j+1]);
  57. t = true;
  58. }
  59. pp--;
  60. }
  61. }
  62.  
  63. bool t = true;
  64. int pp=1;
  65. while(t){
  66. t = false;
  67. for(int j = pp; j >= 0; j--){
  68. if(coeffo[j] > coeffo[j-1]){
  69. swap(coeffo[j], coeffo[j-1]);
  70. swap(matrix[j], matrix[j-1]);
  71. t = true;
  72. }
  73. }
  74. pp++;
  75. }
  76.  
  77.  
  78.  
  79. //printLine(coeffo, size.str);
  80. }
  81.  
  82.  
  83. void printLine(int a[], int size){
  84. cout << " ---- ";
  85. for(int i = 0; i < size; i++){
  86. cout << setw(3) << a[i];
  87. }
  88. cout << endl;
  89. }
  90.  
  91. int readLine(int a[], int size, int n, int k){
  92. int trueIntStr = 0;
  93. cout << "Input " << n << " line:\n";
  94. for(int i = 0; i < size; i++){
  95. cin >> a[i];
  96. if(a[i] % k == 0 || isPrimeToK(a[i], k) || (isPrime(lenOfNumer(a[i]))) && isPrime(k)){
  97. trueIntStr++;
  98. }
  99. }
  100. cout << endl;
  101. return trueIntStr;
  102. }
  103.  
  104. //8 задача
  105. int main(){
  106. sizer size;
  107. int* * matrix;
  108. cout << "Input size: ";
  109. cin >> size.str >> size.stolb;
  110.  
  111. matrix = new int*[size.str];
  112. int len = 0;
  113.  
  114. int k;
  115. cout << "Input K: ";
  116. cin >> k;
  117.  
  118. bool one = false;
  119. int * line;
  120.  
  121. for(int i = 0; i < size.str; i++){
  122. line = new int[size.stolb];
  123. int trueIntStr = 0;
  124. if(readLine(line, size.stolb, i, k) > size.stolb/2){
  125. matrix[len++] = line;
  126. one = true;
  127. }
  128. else
  129. delete[] line;
  130. }
  131.  
  132.  
  133.  
  134. if(one){
  135. sortByArithm(matrix, size);
  136. size.str = len;
  137. for(int j = 0; j < size.str; j++)
  138. printLine(matrix[j], size.stolb);
  139. }else
  140. cout << "NOOOOOOOOOOOOOOOOOOOOOOOOOO!";
  141. system("pause");
  142.  
  143. return 0;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement