Определить минимальный элемент двумерного массива MxN, заполненного случайными числами от -5 до 5
Определить минимальный элемент двумерного массива MxN, заполненного случайными числами от -5 до 5. Напечатать номер строки, содержащей максимальное количество минимальных элементов, если таковые есть.
Вот то что пока есть, но из-за поиска количества элементов почему-то ломается поиск минимального
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
//Определить минимальный элемент двумерного массива MxN, заполненного случайными
//числами от -5 до 5. Напечатать номер строки, содержащей максимальное
//количество минимальных элементов, если таковые есть.
main() {
setlocale(LC_ALL,"");
int i, j, n, m, rand(), min, kolmin=0, row, max= 0;
printf("Введите размер массива, разделенный пробелом (строки и столбцы): ");
scanf("%d%d",&n,&m);
int mxn[n][m];
srand(time(NULL));
//заполнение массива
for(i = 0; i < n; i++) //строки массива
for(j = 0; j < m; j++) //столбцы массива
mxn[i][j] = -5 + rand() % 10;
//вывод массива на экран
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
printf("%d\t", mxn[i][j]);
}
printf("\n");
}
//поиск минимального элемента
for (i = 0; i < n; i++)
{
min=0;
for (j = 0; j < m; j++)
{
if (mxn[i][j] < min)
{
min = mxn[i][j];
}
}
}
//поиск строки, содержащей максимальное колдичество минимальных элементов
for (i = 0; i < n; i++)
{
kolmin=0;
row = 0;
for (j = 0; j < m; j++)
{
if (mxn[i][j] == min)
{
kolmin++;
if (kolmin > max)
{
max = kolmin;
row = i;
}
}
else
{
kolmin = 1;
}
}
}
printf("\nМинимальный элемент массива: %d", min);
printf("\nНомер строки содержащей максимальное количество минимальных элементов: %d", row);
printf("\nКоличество: %d", kolmin);
getchar();
return 0;
}
Ответы (2 шт):
Автор решения: n1tr0xs
→ Ссылка
- Исходно минимум нужно брать
>5, т.е. хотя бы6. - Вы для каждой строки этот минимум ищете заново.
Совсем по-простому это делается так:
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
//Определить минимальный элемент двумерного массива MxN, заполненного случайными
//числами от -5 до 5. Напечатать номер строки, содержащей максимальное
//количество минимальных элементов, если таковые есть.
int main() {
setlocale(LC_ALL,"");
int i, j, n, m, rand(), min=6, maxMinRow=-1, maxMinCount=0, minCount=0;
printf("Введите размер массива, разделенный пробелом (строки и столбцы): ");
scanf("%d%d", &n, &m);
int mxn[n][m];
srand(time(NULL));
//заполнение массива
for(i=0; i<n; ++i) {
for(j=0; j<m; ++j) {
mxn[i][j] = -5 + rand() % 10;
}
}
// вывод массива
for(i=0; i<n; ++i){
for(j=0; j<m; ++j) {
printf("%d\t", mxn[i][j]);
}
printf("\n");
}
// поиск минимального
for(i=0; i<n; ++i) {
for(j=0; j<m; ++j) {
if(mxn[i][j]<min) {
min = mxn[i][j];
}
}
}
// поиск строки с максимальным числом минимальных элементов
for(i=0; i<n; ++i){
int count = 0; // количество минимальных на текущей строке
for(j=0; j<m; ++j) {
if(mxn[i][j]==min) {
++count;
}
}
if(count>maxMinCount){
maxMinCount=count;
maxMinRow = i;
}
}
// подсчет количества минимальных элементов
for(i=0; i<n; ++i) {
for(j=0; j<m; ++j) {
if(mxn[i][j]==min) {
++minCount;
}
}
}
printf("\nМинимальный элемент массива: %d", min);
printf("\nНомер строки содержащей максимальное количество минимальных элементов: %d", maxMinRow);
printf("\nКоличество: %d", minCount);
getchar();
return 0;
}
Автор решения: kawagiri
→ Ссылка
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
//Определить минимальный элемент двумерного массива MxN, заполненного случайными
//числами от -5 до 5. Напечатать номер строки, содержащей максимальное
//количество минимальных элементов, если таковые есть.
int main() {
setlocale(LC_ALL,"");
int i, j, n, m, rand(), min=6, maxMinRow=-1, maxMinCount=0;
printf("Введите размер массива, разделенный пробелом (строки и столбцы): ");
scanf("%d%d", &n, &m);
int mxn[n][m];
srand(time(NULL));
//заполнение массива
for(i=0; i<n; ++i) {
for(j=0; j<m; ++j) {
mxn[i][j] = -5 + rand() % 10;
}
}
// вывод массива
for(i=0; i<n; ++i){
for(j=0; j<m; ++j) {
printf("%d\t", mxn[i][j]);
}
printf("\n");
}
// поиск минимального
for(i=0; i<n; ++i) {
for(j=0; j<m; ++j) {
if(mxn[i][j]<=min) {
min = mxn[i][j];
}
}
}
// поиск строки с максимальным числом минимальных элементов
for(i=0; i<n; ++i){
int count = 0; // количество минимальных на текущей строке
for(j=0; j<m; ++j) {
if(mxn[i][j]==min) {
++count;
}
}
if(count>maxMinCount){
maxMinCount=count;
maxMinRow = i;
}
}
printf("\nМинимальный элемент массива: %d", min);
printf("\nНомер строки содержащей максимальное количество минимальных элементов: %d", maxMinRow);
printf("\nКоличество: %d", maxMinCount);
getchar();
return 0;
}