Если все элементы какой-нибудь строки матрицы равны между собой, то все элементы такой строки заменить нулями - 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) в конце, чтобы программа завершилась без ошибок при нормальном завершении.