Ошибки в задаче "Определить наименьший элемент каждой четной строки двумерного массива" - C (СИ)
Формулировка задачи:
Задание: определить наименьший элемент каждой четной строки матрицы A[M,N]
Проблемы следующие:
1. Из-за того, что цикл - несколько раз идет отображение этого минимума. Как вывести отдельно так, чтобы только 1 раз - не знаю.
2. mini в любом случае отображается как 0
#include <stdio.h> #include <conio.h> #include <stdlib.h> #define n 4 #define m 4 void main() { int i,j,mas[m][n]; int mini,min; for(i=0;i<n;i++) for(j=0;j<m;j++) { printf("[%d][%d]:\t",i,j); scanf("%d",&mas[i][j]); } min=mas[0][0]; for(i=0;i<n;i+=2) for(j=0;j<m;j++) { if(min>mas[i][j]) mini=mas[i][j]; printf("Min of %d is %d\n",i,mini); } getch(); }
Решение задачи: «Ошибки в задаче "Определить наименьший элемент каждой четной строки двумерного массива"»
textual
Листинг программы
for (i = 0; i < n; i += 2) { imin = 0; for (j = 1; j < m; j++) { if (mas[i][imin] > mas[i][j]) mini = j; } printf("Min of %d is %d\n", i, mas[i][mini]); }
Объяснение кода листинга программы
- В цикле
for
перебираются все четные строки массиваmas
с шагом 2 (предполагается, что первая строка массива - нечетная и не содержит четных элементов). - Для каждой строки инициализируется переменная
imin
равная 0, которая будет использоваться для хранения минимального элемента текущей строки. - В цикле
for
перебираются все элементы текущей строки, начиная со второго (индекс 1), при этом условие цикла не выполняется для первого элемента строки (индекс 0), так как он уже был учтен при инициализацииimin
. - Если текущий элемент больше элемента с индексом
imin
, тоimin
присваивается индекс текущего элемента. - После завершения внутренних циклов, выводится сообщение о минимальном элементе текущей строки.
- Значение
mini
не используется в дальнейшем коде и может быть удалено без потери функциональности.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д