Найти среднее геометрическое строки матрицы, на которой находится макс элемент - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с стандартными функциями, математическими и случайными операциями, а также для работы с временем.
  2. Определяем размерность матрицы N = 5.
  3. Инициализируем переменные: матрицу mass[N][N], индексы i, j, значение max = -1, значение d = 1, индекс = 0; а также переменную sg = 1.
  4. Очищаем консоль с помощью функции system(cls).
  5. Инициализируем генератор случайных чисел с помощью srand(time(NULL)).
  6. Выводим матрицу mass на экран с помощью двух вложенных циклов и функции printf().
  7. Если найденное число в матрице больше текущего максимального числа, то обновляем максимальное число и его индекс.
  8. Выводим на экран максимальное число и его индекс.
  9. Вычисляем среднее геометрическое строки матрицы, на которой находится макс элемент, с помощью цикла и функции printf().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы