Заменить нулем все элементы столбца матрицы до максимального элемента - C (СИ)
Формулировка задачи:
Написать программу, над элементами двумерных массивов целых чисел. Действия оформить как отдельные функции.
"Первое действие: Заменить нулем все элементы столбца до максимального элемента. Второе действие: Вывести на экран количество положительных элементов в столбце. Промежуточная функция: Выполнить действия для столбцов, у которых первый элемент имеет четное значение."
Решение задачи: «Заменить нулем все элементы столбца матрицы до максимального элемента»
textual
Листинг программы
#include <stdio.h>
#define COL 6
#define ROW 4
void novate(int *start, int col, int row)
{
int i, j;
int max;
for(i=0; i<row; i++)
{
max = *(start+i);
for(j=1; j<col; j++)
if(*(start+(i)+(j*row))>max)
max = *(start+(i)+(j*row));
printf("max = %i \n", max);
for(j=0; j<col; j++)
if(*(start+(i)+(j*row))<max)
*(start+(i)+(j*row)) = 0;
else
j=col;
}
}
int main (void)
{
int array[COL][ROW] = { 3, 4, 5, 7,
6, 4, 6, 2,
8, 5, 3, 6,
5, 6, 7, 3,
4, 1, 3, 1,
6, 9, 4, 4 };
int i, j;
for(i=0; i<COL; i++)
{
for(j=0; j<ROW; j++)
printf("%i, ", array[i][j]);
putchar('\n');
}
novate(&array[0][0], COL, ROW);
for(i=0; i<COL; i++)
{
for(j=0; j<ROW; j++)
printf("%i, ", array[i][j]);
putchar('\n');
}
return 0;
}
Объяснение кода листинга программы
В этом коде задача замены нулем всех элементов столбца матрицы до максимального элемента. Список действий:
- В функции
novateинициализируются переменные: —iиj— для циклов; —max— для хранения максимального элемента; - В первом цикле перебираются строки матрицы:
— В каждой строке ищется максимальный элемент и сохраняется в переменной
max; — Во втором цикле перебираются столбцы этой строки, и если элемент меньше максимального, то он заменяется на ноль. - Во втором цикле перебираются столбцы матрицы и выводится на экран.
- В функции
mainматрица инициализируется значениями. - Первый цикл выводит на экран значения матрицы.
- Вызывается функция
novateс передачей адреса первого элемента матрицы, количества столбцов и строк матрицы. - Второй цикл выводит на экран значения матрицы после применения функции
novate. - Программа возвращает 0, заканчивая свою работу.