Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <cstdlib>
- int main() {
- int N, M;
- int array[100][100];
- do { // объявление размерности массива
- printf("Enter N\n");
- scanf_s("%d", &N);
- printf("Enter M\n");
- scanf_s("%d", &M);
- if (N >= 100 || M >= 100 || N <= 0 || M <= 0) { // проверка на размерность(не допускаем определение массива с нулевой размерностью и больше 100*100)
- printf("Values are not valid. Try again\n");
- }
- } while (N >= 100 || M >= 100 || N <= 0 || M <= 0); // если проверку не проходит, снова запрашивает N M на ввод
- for (int i = 0; i < N; i++) { // определение каждого элемента массива
- for (int j = 0; j < M; j++) {
- printf("Enter element with index [%d][%d]: ", i, j);
- scanf_s("%d", &array[i][j]);
- }
- }
- bool isFound = false; // булевая переменная(логический оператор, может принимать значение только true / false)
- for (int j = 0; j < M; j++) { // по заданию нужно искать нули в столбцах, значит здесь j
- int countOfNotNegative = 0; // обнуление переменной-счетчика, которая будет считать кол-во положительных эл-тов в столбце
- for (int i = 0; i < N; i++) { // ходим по столбцу..
- if (array[i][j] > 0) { // надеюсь здесь все понятно))))))
- countOfNotNegative++;
- }
- }
- if (countOfNotNegative == N) { // если все элементы столбца положительные...
- isFound = true; // столбец найден - значит true
- printf("Number of colomn is %d\n", j);
- break; // выход из цикла, т.к. столбец по условию мы уже нашли
- }
- }
- if (isFound == false) { // если же переменная осталась false, т.е. таковых столбцов нет в массиве, то выводим сообщение об этом
- printf("There are no colomns without negative numbers\n");
- }
- printf("Array :\n"); // вывод массива
- int newArray[100][100]; // создаем новый массив для того, чтобы отсортировать строки по умолчанию, и потом отсортируем его по возрастанию
- // ну смотри тебе нужно посчитать кол-во повторяющихся элементов в этом массиве: 5 4 3 4 3 5. Для того, чтобы посчитать кол-во повторяющихся отсортируем
- // получим 3 3 4 4 5 5. потом сравниваем a[0] == a[0+1](т.е. следующий), если да то k++, k - кол-во повторов, так у нас k будет равно 3.
- for (int i = 0; i < N; i++) {
- for (int j = 0; j < M; j++) {
- printf("%d ", array[i][j]);
- newArray[i][j] = array[i][j];
- }
- printf("\n");
- }
- for (int i = 0; i < N; i++) { // сортировка каждой строки по возрастанию(bubble sort) посмотри в инете что это такое
- for (int j = 0; j < M; j++) {
- for (int k = 0; k < M - j - 1; k++) {
- if (array[i][k] > array[i][k + 1]) {
- int tmp = array[i][k];
- array[i][k] = array[i][k + 1];
- array[i][k + 1] = tmp;
- }
- }
- }
- }
- for (int i = 0; i < N - 1; i++) {
- for (int j = i + 1; j < N; j++) {
- int countOfRepeating1 = 0, countOfReapiting2 = 0;
- for (int k = 0; k < M - 1; k++) {
- if (array[i][k] == array[i][k + 1]) {
- countOfRepeating1++;
- }
- if (array[j][k] == array[j][k + 1]) {
- countOfReapiting2++;
- }
- }
- if (countOfRepeating1 > countOfReapiting2) {
- for (int k = 0; k < M; k++) {
- int tmp = array[i][k];
- array[i][k] = array[j][k];
- array[j][k] = tmp;
- tmp = newArray[i][k];
- newArray[i][k] = newArray[j][k];
- newArray[j][k] = tmp;
- }
- }
- }
- }
- printf("Final array:\n"); // вывод массива
- for (int i = 0; i < N; i++) {
- for (int j = 0; j < M; j++) {
- printf("%d ", newArray[i][j]);
- }
- printf("\n");
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement