Наименьшее число в массиве, а так же проверка, является ли оно наименьшее везде - C (СИ)
Формулировка задачи:
Привет!
Задача: есть числовой массив, нужно найти такой элемент, который является наименьшим в своей строке и в своем столбце. А если такого нет, то вывести "0".
В общем, я очень долго пытался сделать что-то близкое. Основной код:
Программа находит минимальный элемент в массиве.
в общем, я пытался сделать проверку типа:
(проверить мин. элемент в столбце, а потом в строчке)
но не вышло.
Помогайте.
#include "stdio.h" int main() { int q, w, j, i, t=0; printf("Vvedite razmer M: "); scanf("%d", &q); printf("Vvedite razmer N: "); scanf("%d", &w); int **mass; mass = new int*[q]; for (i = 0; i < q; i++) mass[i] = new int[w]; for (i = 0; i < q; i++) for (j = 0; j < w; j++) { printf("Enter mass[%d][%d]:", i, j); scanf("%d", &mass[i][j]); } //memory ^ //min elements in j and i int min=mass[0][0]; int im=0; int jm=0; for(i=0; i<q; i++) { for(j=0;j<w;j++) { if(mass[i][j]<min) { min=mass[i][j]; im=i; jm=j; } } } printf("\nResult mass[%d][%d]=%d\n",im,jm,min); return 0; }
if(mass[jm][i]<minj) minj=mass[jm][i]; i=im1; if(mass[j][im1]<minj) { minj=mass[j][im1];
Решение задачи: «Наименьшее число в массиве, а так же проверка, является ли оно наименьшее везде»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <limits.h> int main() { int mas[4][4] = { 1,5,8,10, 12,3,4,7, -5,1,8,-20, 5,6,1,2, }; int i,j, k; int min = INT_MAX; int flg = 0; for(i = 0; i < 4; i++) { for(j = 0; j < 4;j++) { if(mas[i][j] < min) { for(k = 0; k < 4; k++) if(mas[i][j] > mas[k][j]) {flg=1;break;} if(flg == 0) min = mas[i][j]; flg = 0; } } } printf("%d\n",min); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с массивами и выводом данных в консоль.
- Объявление двумерного массива с размером 4x4 и заполнение его значениями.
- Объявление переменных для хранения индексов минимального элемента.
- Объявление переменной для хранения минимального элемента.
- Объявление флага проверки на наименьшее значение во всем массиве.
- Пройтись по всем элементам массива в двух вложенных циклах.
- Если текущий элемент меньше минимального значения, то обновить минимальное значение.
- Если текущий элемент больше значения в соответствующем элементе по диагонали (при условии что индексы не выходят за пределы массива), то обновить флаг.
- Если флаг равен 0, то обновить минимальное значение.
- Обнулить флаг после выхода из цикла.
- Вывести на экран минимальное значение.