Найти среднее геометрическое строки матрицы, на которой находится макс элемент - C (СИ)
Формулировка задачи:
найти среднее геометрическое строки матрицы на которой находится макс элемент.
Выбивает после ввода элементов и я не додумаюсь как сделать чтобы искал среднее геометрическое только строки с макс. элементом
#include "stdafx.h" #include "stdio.h" #include "conio.h" #include "windows.h" #include "math.h" #define n 20 #define m 20 void main() { float a[n][m],srg,max,p; int i,j,ri,rj; char otv; while(1) { SetConsoleCP(1251); SetConsoleOutputCP(1251); system("cls"); printf("\n Постановка"); while(1) { printf("\n кол-во строк в массиве <=%d \n",n); scanf("%d",&ri); if((ri>1)&&(ri<=n))break; printf("\n повторите ввод"); } while(1) { printf("\n кол-во столбцов в массиве <=%d \n",m); scanf("%d",&rj); if((rj>1)&&(rj<=m))break; printf("\n повторите ввод"); } system("cls"); printf("\n Введите метрицу А \n"); for(i=0;i<ri;i++) { for(j=0;j<rj;j++) { printf("a[%d][%d]=",i+1,j+1); scanf("%f",&a[i][j]); } } system("cls"); printf("\n Исходная матрица \n"); for ( i = 0; i <ri; i ++ ) { for ( j = 0; j <rj; j ++ ) printf ( "%6.2f", a[i][j] ); printf("\n"); } max=a[0][0]; for (i=0;i<ri;i++) { for(j=0;i<rj;j++) if(a[i][j]>max) max=a[i][j]; } printf("\n max=%6.2f",max); for (i=0;i<ri;i++) { p=1; srg=0; for(j=0;i<rj;j++) p=p*a[i][j]; srg=pow(p,1/ri); } for ( i = 0; i <ri; i ++ ) { for ( j = 0; j <rj; j ++ ) printf("\n srg=%6.2f",srg); } printf("\n Продолжить(Y/N)?"); scanf("%s",&otv); if((otv=='n')||(otv=='N'))break; } printf("\n Клементьев 22П"); getch(); }
Решение задачи: «Найти среднее геометрическое строки матрицы, на которой находится макс элемент»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> #define N 5 int main(void) { int mass[N][N], i, j, max = -1, d = 1, index = 0; float sg = 1; system("cls"); srand(time(NULL)); printf("Matrucya:\n"); for(i = 0; i < N; i++) { for(j = 0; j < N; j++) { printf("%d ", mass[i][j] = rand() % 99); if(mass[i][j] > max) { max = mass[i][j]; index = i; } } printf("\n"); } printf("\n MAX = "); printf("%d , ryadok #%d", max, index + 1); printf("\nseredne geometruchne ryadka, y jakomy znah. MAX : "); for(i = 0; i < N; i++) d *= mass[index][i]; sg = exp(log(abs(d))/N); printf("%.2f\n", sg); getch(); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с стандартными функциями, математическими и случайными операциями, а также для работы с временем.
- Определяем размерность матрицы N = 5.
- Инициализируем переменные: матрицу mass[N][N], индексы i, j, значение max = -1, значение d = 1, индекс = 0; а также переменную sg = 1.
- Очищаем консоль с помощью функции system(
cls
). - Инициализируем генератор случайных чисел с помощью srand(time(NULL)).
- Выводим матрицу mass на экран с помощью двух вложенных циклов и функции printf().
- Если найденное число в матрице больше текущего максимального числа, то обновляем максимальное число и его индекс.
- Выводим на экран максимальное число и его индекс.
- Вычисляем среднее геометрическое строки матрицы, на которой находится макс элемент, с помощью цикла и функции printf().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д