Определить значения и позиции максимального и минимального элемента массива - C (СИ) (79148)
Формулировка задачи:
количество нечетных элементов определяет верно..
а вот не правильно определяет значения и позиции максимального и минимального элемента массива.
Кто разбирается проверьте пожалуйста)
#include <stdio.h>
#include <conio.h>
#define M_ROWS 3
#define M_COLUMNS 3
int matrix[M_ROWS][M_COLUMNS] = {
{1, 6, 7},
{2, 5, 8},
{3, 4, 9},
};
int main()
{
int n = 0;
int i, j;
int max, min, jmax, jmin, imax, imin;
max = min = matrix[0][0];
imax = imin = 0;
jmax = jmin = 0;
for(i = 0; i < M_ROWS; i++)
{
for(j = 0; j < M_COLUMNS; j++)
{
if ((matrix[i][j] % 2) == 1)
n++; // =1
if (matrix[i][j] < min)
{
min = matrix[i][j];
imin = i;
jmin = j;
}
if(matrix[j][j] > max)
{
max = matrix[i][j];
imax = i;
jmax = j;
}
}
}
printf("Количество нечетных элементов: %d\n", n);
printf("Максимальный: %d %d\n", imax, jmax);
printf("Минимальный: %d %d\n", imin, jmin);
getch();
return 0;
}Решение задачи: «Определить значения и позиции максимального и минимального элемента массива»
textual
Листинг программы
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main()
{
int i = 0;
int j = 0;
int imax = 0;
int jmax = 0;
int imin = 0;
int jmin = 0;
int nodds = 0;
int matrix[ROWS][COLS] = {
{ 1, 6, 7 },
{ 2, 5, 8 },
{ 3, 4, 9 }
};
for(i = 0; i < ROWS; ++i) {
for(j = 0; j < COLS; ++j) {
if(matrix[i][j] % 2 != 0) {
++nodds;
}
if(matrix[imin][jmin] > matrix[i][j]) {
imin = i;
jmin = j;
}
if(matrix[imax][jmax] < matrix[i][j]) {
imax = i;
jmax = j;
}
}
}
printf("Matrix:\n");
for(i = 0; i < ROWS; ++i) {
for(j = 0; j < COLS; ++j) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
printf("\nAmount of odd elements is %d", nodds);
printf("\nMaximal element has coordinates [%d][%d] and equal %d", imax, jmax, matrix[imax][jmax]);
printf("\nMinimum element has coordinates [%d][%d] and equal %d", imin, jmin, matrix[imin][jmin]);
printf("\n\n");
return 0;
}
Объяснение кода листинга программы
В данном коде на языке C выполняется поиск максимального и минимального элемента в заданном массиве. Список действий:
- Объявление переменных:
- i, j - для прохода по массиву
- imax, jmax, imin, jmin - для хранения координат максимального и минимального элемента
- nodds - для подсчета количества нечетных элементов
- Задание массива:
- matrix[ROWS][COLS] = {1, 6, 7; 2, 5, 8; 3, 4, 9}
- Поиск нечетных элементов:
- Проход по всем элементам массива
- Если элемент нечетный, увеличиваем значение переменной nodds
- Поиск максимального и минимального элемента:
- Проход по всем элементам массива
- Сравниваем текущий элемент с предыдущим максимальным/минимальным элементом
- Обновляем значения переменных imax, jmax, imin, jmin, если текущий элемент больше/меньше предыдущего макси/мин
- Вывод результатов:
- Выводим массив на экран
- Выводим количество нечетных элементов
- Выводим координаты и значение максимального элемента
- Выводите координаты и значение минимального элемента
- Вывод завершен