Как найти наибольший элемент во втором столбце, и определить среднее арифметическое для всех элементов? - C (СИ)
Формулировка задачи:
Всем привет
Есть программа по рандомному заполнению массива
Нужно найти наибольший элемент во втором столбце и определить среднее арифметическое для всех элементов, расположенных ниже строки с наибольшим элементом.
Как сделать?
Какой принцип решения подобного рода задач?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctime>
int main(int argc, char * argv[])
{
srand(time(NULL));
const short N = 5;
int mas[N][N];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
mas[i][j] = rand() % 500;
}
}
//---------------------------------------
for (int p = 0; p < N; p++)
{
for (int pp = 0; pp < N; pp++)
{
printf("%d\t", mas[p][pp]);
}
printf("\n");
}
_getch();
return 0;
}Решение задачи: «Как найти наибольший элемент во втором столбце, и определить среднее арифметическое для всех элементов?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctime>
int main()
{
srand(time(NULL));
const short N = 5;
int mas[N][N];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
mas[i][j] = rand() % 500;
}
}
//---------------------------------------
for (int p = 0; p < N; p++)
{
for (int pp = 0; pp < N; pp++)
{
printf("%d\t", mas[p][pp]);
}
printf("\n");
}
int max=mas[0][1],k;
for (int i = 1; i < N; i++)
{
if (mas[i][1]>max)
max=mas[i][1];
k=i;
}
printf("\nMax in 2 stolb = %d\t", max);
double sr=0;int n=0;
for (int i = k; i < N; i++)
for (int j = 0; j < N; j++)
{
sr+=mas[i][j];
n++;
}
sr=sr/n;
printf("\n sr arifm = %6.2lf\t", sr);
_getch();
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Задается константа N, представляющая количество строк и столбцов в матрице.
- Создается матрица mas[N][N] и инициализируется случайными числами от 0 до 499.
- Выполняется двойной цикл, который выводит все элементы матрицы на экран.
- Переменная max инициализируется значением первого элемента второй строки матрицы.
- Выполняется цикл по строкам матрицы, начиная со второй строки, и сравнивается значение каждого элемента второй колонки с текущим максимальным значением. Если текущее значение больше, то оно становится новым максимальным, а переменная k запоминает номер строки, в которой найдено максимальное значение.
- Выводится на экран максимальное значение второго столбца и его номер.
- Переменная sr инициализируется нулем, а переменная n — нулем.
- Выполняется двойной цикл, который проходит по всем элементам матрицы, начиная с элемента в строке k+1, и суммирует все элементы в переменную sr, а также увеличивает переменную n на единицу.
- Переменная sr делится на n для получения среднего арифметического, и результат выводится на экран.
- Программа ожидает нажатия клавиши для выхода.