Определить номер строки матрицы, сумма элементов которой максимальна - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача: Написать программу, которая определяет номер строки прямоугольной матрицы случайных действительных чисел A[N][M], сумма элементов которой максимальна. Вывести на экран эту строку отдельно. Пока что дошло до этого...
#include <stdio.h>
#include <conio.h> 
#include <locale.h>
#include <stdlib.h>
typedef int *pInt;
void main()
{
    int M, N, i, j;
    int random (int N) {return rand() % N;}
    pInt *A;
        printf("Введите размер матрицы, сперва количество строк, потом количество строчек");
        scanf("%d%d", &M, &N);
    A = new pInt[M];
    for ( i = 0; i < M; i++ )
        A[i] = new int[N];
        int random ( int N ) { return rand() % N; } 
}
Не знаю, как совместить выделение памяти для матрицы и нахождение строки с максимальной суммой элементов. Если возможно, то желательно написать всю программу на C, буду премного благодарен.

Решение задачи: «Определить номер строки матрицы, сумма элементов которой максимальна»

textual
Листинг программы
/*Задача: Написать программу, которая определяет номер строки прямоугольной
матрицы случайных действительных чисел A[N][M], сумма элементов
которой максимальна. Вывести на экран эту строку отдельно.*/
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
#include <time.h>
int i;
int j;
int m;
int n;
int k;
int str_sum;
int max_str;
int max_str_id;
int fill_matr(void){ //Функция заполняет матрицу
  srand (time( NULL )*k/1000);// инициализация функции rand значением
  int matr_number = rand();
  return matr_number;          //вернуть число
}
 
int main(int argc, char** argv[])
{
 
    setlocale(LC_ALL, "RUS");
puts("Введите количество столбцов матрицы:");
        scanf("%d",&m);
puts("Введите количество строк матрицы:");
        scanf("%d",&n);
int str_sum[m];
int matrix[m][n];
 
    for (i = 0; i < m; i++ ){
    for (j=0; j<n; j++){
       matrix[i][j]=fill_matr();//заполняем матрицу
       k++;
       }
    printf( "\n" );
}
 
   printf( "Вот такой массив у нас получился:\n" );
  for ( i = 0; i < m; i++ ) {
        str_sum[i]=0;
    for ( j = 0; j < n; j++ )
    {
printf( "[%d][%d]=%d ", i, j, matrix[i][j] );
str_sum[i]+=matrix[i][j];//вычисляем сумму эл-тов строки
    }
    printf( "\nсумма элементов строки: %d \n", str_sum[i] );
  }
int x;
  max_str=str_sum[0];
for ( x = 0; x < m; x++ ) {
    if (max_str<str_sum[x]){
        max_str=str_sum[x];
        max_str_id=x;
    }
}
printf( "Максимальная сумма элементов строки =%d и номер этой строки - %d  \n \n",max_str,max_str_id);
 
for(i=0; i<m; i++)
{
    printf( "[%d][%d]=%d ", max_str_id, i, matrix[max_str_id][i] );
}
    }

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

  1. Ввод количества столбцов и строк матрицы с помощью функции scanf.
  2. Создание матрицы и заполнение ее с помощью функции fill_matr, которая возвращает случайное число для каждого элемента матрицы.
  3. Вычисление суммы элементов каждой строки матрицы с помощью двух вложенных циклов и функции scanf.
  4. Поиск строки с максимальной суммой элементов с помощью двух вложенных циклов и функции if.
  5. Вывод на экран строки с максимальной суммой элементов с помощью функции printf.

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


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

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

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