Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <iomanip>
- using namespace std;
- struct sizer{
- int str, stolb;
- };
- int lenOfNumer(int n){
- int c = 0;
- while(n){
- n/=10;
- c++;
- }
- return c;
- }
- bool isPrime(int n){
- if(n % 2 == 0 && n != 2)
- return false;
- for(int i = 3; i*i < n; i+=2)
- if(n%i == 0)
- return false;
- return true;
- }
- bool isPrimeToK(int n, int k){
- for(int i = 2; i < k && i*i<n; i++)
- if(n%i == 0)
- return false;
- return true;
- }
- void printLine(int a[], int size);
- void sortByArithm(int ** matrix, sizer size){
- int * coeffo = new int[size.str];
- int sum;
- for(int i = 0; i < size.str; i++){
- sum = 0;
- for(int j = 0; j < size.stolb; j++){
- sum += matrix[i][j];
- }
- coeffo[i] = sum;
- }
- bool t = true;
- int pp=size.str-2;
- while(t){
- t = false;
- for(int j = 0; j <=pp; j++){
- if(coeffo[j] > coeffo[j+1]){
- swap(coeffo[j], coeffo[j+1]);
- swap(matrix[j], matrix[j+1]);
- t = true;
- }
- pp--;
- }
- }
- bool t = true;
- int pp=1;
- while(t){
- t = false;
- for(int j = pp; j >= 0; j--){
- if(coeffo[j] > coeffo[j-1]){
- swap(coeffo[j], coeffo[j-1]);
- swap(matrix[j], matrix[j-1]);
- t = true;
- }
- }
- pp++;
- }
- //printLine(coeffo, size.str);
- }
- void printLine(int a[], int size){
- cout << " ---- ";
- for(int i = 0; i < size; i++){
- cout << setw(3) << a[i];
- }
- cout << endl;
- }
- int readLine(int a[], int size, int n, int k){
- int trueIntStr = 0;
- cout << "Input " << n << " line:\n";
- for(int i = 0; i < size; i++){
- cin >> a[i];
- if(a[i] % k == 0 || isPrimeToK(a[i], k) || (isPrime(lenOfNumer(a[i]))) && isPrime(k)){
- trueIntStr++;
- }
- }
- cout << endl;
- return trueIntStr;
- }
- //8 задача
- int main(){
- sizer size;
- int* * matrix;
- cout << "Input size: ";
- cin >> size.str >> size.stolb;
- matrix = new int*[size.str];
- int len = 0;
- int k;
- cout << "Input K: ";
- cin >> k;
- bool one = false;
- int * line;
- for(int i = 0; i < size.str; i++){
- line = new int[size.stolb];
- int trueIntStr = 0;
- if(readLine(line, size.stolb, i, k) > size.stolb/2){
- matrix[len++] = line;
- one = true;
- }
- else
- delete[] line;
- }
- if(one){
- sortByArithm(matrix, size);
- size.str = len;
- for(int j = 0; j < size.str; j++)
- printLine(matrix[j], size.stolb);
- }else
- cout << "NOOOOOOOOOOOOOOOOOOOOOOOOOO!";
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement