С++: Найти наибольшей элемент столбца в двумерном массиве

Архив кончается — плохо, есть некоторые штуки из текущих наработок. Задача звучит так:

Написать программу, которая принимает с клавиатуры число N, задает квадратную матрицу размера N на N, со-стоящую из целых случайных чисел и выводит ее. Затем необходимо определить номер столбца,  элемент в котором максимален среди всех столбцов.

Задачка на массивы. Сразу даю код, а потом его объясню:

[cpp]

#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n;
int a [255][255];
scanf(«%d», &n);
srand(time(NULL));
for (int i = 0; i<n; i++)
{
printf(«\n»);
for (int j = 0; j < n; j++)
{
a[i][j] = rand() % (100+1) + 1;
printf(«%d «, a[i][j]);
}
}
int max = 0, jmax = 0;
printf(«\n»);
for (int i = 0; i<n; i++)
{
for (int j = 0; j < n; j++)
{
if (a[i][j] > max)
{
max = a[i][j];
jmax = j;
}
}
}
printf(«%d — %d», jmax+1, max);
return 0;
}

[/cpp]

Примечание: Код немного поправил, что бы не было зависимости от stdafx.h

Что здесь происходит:

[cpp]

int n;
int a [255][255];
scanf(«%d», &n);
srand(time(NULL));
for (int i = 0; i<n; i++)
{
printf(«\n»);
for (int j = 0; j < n; j++)
{
a[i][j] = rand() % (100+1) + 1;
printf(«%d «, a[i][j]);
}
}

[/cpp]

Здесь объявляются необходимые переменные и далее массив инициализируется (заполняется) случайными числами от 1 до 101 (почему — не знаю :)). Далее он тут же выводится на консоль.

[cpp]

int max = 0, jmax = 0;
printf(«\n»);
for (int i = 0; i<n; i++)
{
for (int j = 0; j < n; j++)
{
if (a[i][j] > max)
{
max = a[i][j];
jmax = j;
}
}
}
printf(«%d — %d», jmax+1, max);

[/cpp]

Вот тут все основные действия и самое интересное.

переменные:

jmax нужна для хранения индекса столбца с наибольшим значением, max нужна для хранения значения самого числа. Массив у меня целочисленный, поэтому у меня и переменные целочисленные.

Далее по ходу программы описаны 2 цикла, вложенных друг в друга, стандартные для обработки массивов. Внутри цикла проверяется уловие

[cpp]

if (a[i][j] > max)
{
max = a[i][j];
jmax = j;
}

[/cpp]

Если элемент больше максимума, то максимум принимает значение этого элемента и в j записывается новый номер — тот где стоит этот новонайденый элемент. Пройдя по всем можно найти самый большой из них.

 

 

Добавить комментарий