Если все элементы какой-нибудь строки матрицы равны между собой, то все элементы такой строки заменить нулями - C (СИ)
Формулировка задачи:
Если все элементы какой-нибудь строки матрицы равны между собой, то все элементы такой строки заменить нулями!
Как это сделать??, помогите....
Решение задачи: «Если все элементы какой-нибудь строки матрицы равны между собой, то все элементы такой строки заменить нулями»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #define ROWS 5 #define COLS 3 /* возвращает 1, если все элементы строки равны */ int cmpValues(const int *arr, size_t count){ const int *p; if ( !arr || !count ) return 0; for ( p = arr + count - 1; p > arr; p-- ) if ( *p != *arr ) return 0; return 1; } /* Если все элементы какой-нибудь строки матрицы равны между собой, то все элементы такой строки заменить нулями! */ int main(void){ int matr[ROWS][COLS]; size_t i, j; printf("\nEnter values for array:\n"); for ( i = 0; i < ROWS; i++ ){ for ( j = 0; j < COLS; j++ ){ printf("[%d][%d] = ", i, j); scanf("%d", &matr[i][j]); } } printf("\nOriginal array:\n"); for ( i = 0; i < ROWS; i++ ) for ( j = 0; j < COLS; j++ ) printf( ( j < COLS - 1 ) ? "%d " : "%d\n", matr[i][j]); for ( i = 0; i < ROWS; i++ ) if ( cmpValues(&matr[i][0], COLS) ) memset((void*)&matr[i][0], 0, COLS * sizeof(int)); printf("\nProcessed array:\n"); for ( i = 0; i < ROWS; i++ ) for ( j = 0; j < COLS; j++ ) printf( ( j < COLS - 1 ) ? "%d " : "%d\n", matr[i][j]); exit(0); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
, , - Определяем константы ROWS и COLS, которые задают размерность матрицы.
- Создаем функцию cmpValues, которая принимает на вход указатель на первый элемент массива и количество элементов в массиве. Функция проверяет, все ли элементы массива равны между собой.
- Создаем функцию main, которая запрашивает у пользователя ввод значений для матрицы, выводит исходную матрицу, заменяет нулями все элементы строк, где все элементы равны, и выводит полученную матрицу.
- В функции main создаем массив типа int matr[ROWS][COLS] для хранения матрицы.
- Запрашиваем у пользователя ввод значений для матрицы, используя вложенные циклы, и сохраняем эти значения в переменной matr.
- Выводим исходную матрицу на экран.
- Проходим по всем строкам матрицы и, если все элементы строки равны между собой, заменяем их нулями, используя функцию memset.
- Выводим полученную матрицу на экран.
- В функции main добавляем оператор exit(0) в конце, чтобы программа завершилась без ошибок при нормальном завершении.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д