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

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

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

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

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

textual
Листинг программы
  1. /*Задача: Написать программу, которая определяет номер строки прямоугольной
  2. матрицы случайных действительных чисел A[N][M], сумма элементов
  3. которой максимальна. Вывести на экран эту строку отдельно.*/
  4. #include <stdio.h>
  5. #include <conio.h>
  6. #include <locale.h>
  7. #include <stdlib.h>
  8. #include <time.h>
  9. int i;
  10. int j;
  11. int m;
  12. int n;
  13. int k;
  14. int str_sum;
  15. int max_str;
  16. int max_str_id;
  17. int fill_matr(void){ //Функция заполняет матрицу
  18.   srand (time( NULL )*k/1000);// инициализация функции rand значением
  19.   int matr_number = rand();
  20.   return matr_number;          //вернуть число
  21. }
  22.  
  23. int main(int argc, char** argv[])
  24. {
  25.  
  26.     setlocale(LC_ALL, "RUS");
  27. puts("Введите количество столбцов матрицы:");
  28.         scanf("%d",&m);
  29. puts("Введите количество строк матрицы:");
  30.         scanf("%d",&n);
  31. int str_sum[m];
  32. int matrix[m][n];
  33.  
  34.     for (i = 0; i < m; i++ ){
  35.     for (j=0; j<n; j++){
  36.        matrix[i][j]=fill_matr();//заполняем матрицу
  37.        k++;
  38.        }
  39.     printf( "\n" );
  40. }
  41.  
  42.    printf( "Вот такой массив у нас получился:\n" );
  43.   for ( i = 0; i < m; i++ ) {
  44.         str_sum[i]=0;
  45.     for ( j = 0; j < n; j++ )
  46.     {
  47. printf( "[%d][%d]=%d ", i, j, matrix[i][j] );
  48. str_sum[i]+=matrix[i][j];//вычисляем сумму эл-тов строки
  49.     }
  50.     printf( "\nсумма элементов строки: %d \n", str_sum[i] );
  51.   }
  52. int x;
  53.   max_str=str_sum[0];
  54. for ( x = 0; x < m; x++ ) {
  55.     if (max_str<str_sum[x]){
  56.         max_str=str_sum[x];
  57.         max_str_id=x;
  58.     }
  59. }
  60. printf( "Максимальная сумма элементов строки =%d и номер этой строки - %d  \n \n",max_str,max_str_id);
  61.  
  62. for(i=0; i<m; i++)
  63. {
  64.     printf( "[%d][%d]=%d ", max_str_id, i, matrix[max_str_id][i] );
  65. }
  66.     }

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

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

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


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

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

9   голосов , оценка 3.778 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы