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

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

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

Дана матрица размером N*M. Напишите программу, определяющую максимальное значение в матрице и номер его столбца и строки.Ввод с экрана.Динамические массивы.
 #include<stdio.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std; 
int main ( ) { 
setlocale(LC_ALL, "Russian"); 
int **a,i,max,x,y,n,m,j;
printf("N= "); 
scanf("%d", &n);
printf("M= ");
scanf("%d", &m);
printf("\n Матрица \n");
 
a=new int*[m];
for(j=0;j<m;j++)
    a[j]=new int[n];
for(i=0;i<n;i++) 
for(j=0;j<m;j++)
scanf("%d", &a[j][i]);
for(i=0;i<n;i++){ 
for(j=0;j<m;j++)
printf ("%d   ", a[j][i]);
printf ("\n");
printf ("\n");}
 
{
max=a[i][j];
for( i=0; i<=n; i++)
for( j=0; j<m; j++)
if(max< a[i][j]){
max=a[i][j];
x=i;
y=j;
}}
printf("x=%f",x);
printf("y=%f",y);
printf("max=%d",max);
system("pause");
return 0;
}

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

textual
Листинг программы
#include<stdio.h>
#include <locale.h>
#include <stdlib.h>
int main ( ) 
{ 
    int **a,i,max,x,y,n,m,j;
    setlocale(LC_ALL, "Russian"); 
    printf("N= "); 
    scanf("%d", &n); // Количество строк
    printf("M= ");
    scanf("%d", &m); // Количество столбцов
    printf("\n Матрица \n");
    a=new int*[n];
    for(i=0;i<n;i++)
        a[i]=new int[m];
    for(i=0;i<n;i++) 
        for(j=0;j<m;j++)
            scanf("%d", &a[i][j]);
    for(i=0;i<n;i++)
    { 
        for(j=0;j<m;j++)
            printf ("%d ", a[i][j]);
        printf ("\n");
    }
    printf ("\n");
    max=a[0][0];
    x=y=0;
    for( i=0; i<n; i++)
        for( j=0; j<m; j++)
            if(max< a[i][j])
            {
                max=a[i][j];
                x=i;
                y=j;
            }
    for(i=0;i<n;i++)
        delete[] a[i];
    delete[] a;
    printf("x=%d\n",x);
    printf("y=%d\n",y);
    printf("max=%d\n",max);
    system("pause");
    return 0;
}

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

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

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


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

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

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