Определить максимальное значение в матрице и номер его столбца и строки. Почему не работает программа? - C (СИ)

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

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

Дана матрица размером N*M. Напишите программу, определяющую максимальное значение в матрице и номер его столбца и строки.Ввод с экрана.Динамические массивы.
Листинг программы
  1. #include<stdio.h>
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. using namespace std;
  6. int main ( ) {
  7. setlocale(LC_ALL, "Russian");
  8. int **a,i,max,x,y,n,m,j;
  9. printf("N= ");
  10. scanf("%d", &n);
  11. printf("M= ");
  12. scanf("%d", &m);
  13. printf("\n Матрица \n");
  14. a=new int*[m];
  15. for(j=0;j<m;j++)
  16. a[j]=new int[n];
  17. for(i=0;i<n;i++)
  18. for(j=0;j<m;j++)
  19. scanf("%d", &a[j][i]);
  20. for(i=0;i<n;i++){
  21. for(j=0;j<m;j++)
  22. printf ("%d ", a[j][i]);
  23. printf ("\n");
  24. printf ("\n");}
  25. {
  26. max=a[i][j];
  27. for( i=0; i<=n; i++)
  28. for( j=0; j<m; j++)
  29. if(max< a[i][j]){
  30. max=a[i][j];
  31. x=i;
  32. y=j;
  33. }}
  34. printf("x=%f",x);
  35. printf("y=%f",y);
  36. printf("max=%d",max);
  37. system("pause");
  38. return 0;
  39. }

Решение задачи: «Определить максимальное значение в матрице и номер его столбца и строки. Почему не работает программа?»

textual
Листинг программы
  1. #include<stdio.h>
  2. #include <locale.h>
  3. #include <stdlib.h>
  4. int main ( )
  5. {
  6.     int **a,i,max,x,y,n,m,j;
  7.     setlocale(LC_ALL, "Russian");
  8.     printf("N= ");
  9.     scanf("%d", &n); // Количество строк
  10.     printf("M= ");
  11.     scanf("%d", &m); // Количество столбцов
  12.     printf("\n Матрица \n");
  13.     a=new int*[n];
  14.     for(i=0;i<n;i++)
  15.         a[i]=new int[m];
  16.     for(i=0;i<n;i++)
  17.         for(j=0;j<m;j++)
  18.             scanf("%d", &a[i][j]);
  19.     for(i=0;i<n;i++)
  20.     {
  21.         for(j=0;j<m;j++)
  22.             printf ("%d ", a[i][j]);
  23.         printf ("\n");
  24.     }
  25.     printf ("\n");
  26.     max=a[0][0];
  27.     x=y=0;
  28.     for( i=0; i<n; i++)
  29.         for( j=0; j<m; j++)
  30.             if(max< a[i][j])
  31.             {
  32.                 max=a[i][j];
  33.                 x=i;
  34.                 y=j;
  35.             }
  36.     for(i=0;i<n;i++)
  37.         delete[] a[i];
  38.     delete[] a;
  39.     printf("x=%d\n",x);
  40.     printf("y=%d\n",y);
  41.     printf("max=%d\n",max);
  42.     system("pause");
  43.     return 0;
  44. }

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

  1. Программа начинает с ввода количества строк и столбцов матрицы с помощью функции scanf.
  2. Затем происходит выделение памяти под матрицу с помощью оператора new.
  3. Далее, с помощью двух вложенных циклов, происходит заполнение матрицы значениями с помощью функции scanf.
  4. Затем, с помощью двух вложенных циклов, происходит вывод значений матрицы на экран с помощью функции printf.
  5. После этого происходит поиск максимального значения в матрице с помощью двух вложенных циклов. Если текущее значение больше максимального, оно становится новым максимальным, а индексы (строка и столбец) этого значения сохраняются в переменных x и y.
  6. После этого происходит освобождение памяти, выделенной под матрицу, с помощью функции delete.
  7. Наконец, с помощью функции printf выводятся на экран найденные максимальное значение, строка и столбец.
  8. Программа завершается с помощью функции system(pause) и возвращает 0. Возможные причины ошибок:
    • Неверно указаны входные данные (количество строк или столбцов).
    • Недостаточно памяти для выделения под матрицу.
    • Возможно, ввод значений в матрицу или поиск максимального значения выполняются некорректно.
    • Некорректно освобождается память после использования функции delete.

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


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

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

8   голосов , оценка 3.875 из 5

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

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

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