Максимум на побочной диагонали, что не так в программе? - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <iostream>
using namespace std;
int func (int **arr, int n );
// вывод матрицы
void PrintMatrix(int **a, int n)
{
for (int i=0;i<n;i++){
for (int j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
}
int main()
{
int n;
printf("Vvedite razmernost matrizi n: ");
scanf("%d", &n);
//динамическое создание двумерного массива
int **a=new int *[n];
for (int i=0;i<n;i++)
a[i]=new int [n];
//ввод матрицы
for (int i=0;i<n;i++){
printf("enter %d line\n", i+1);
for (int j=0;j<n;j++)
scanf("%d", &a[i][j]);
}
printf("\n\nIshodnaja Matriza\n");
PrintMatrix(a,n);
printf ("Maximum is %d\n",func (a,n));
//удаление
for (int i=0;i<n;i++)
delete []a[i];
delete []a;
system ("pause");
return 0;
}
int func(int **arr,int n)
{
int max=arr[0][n-1];
int i;
int j;
for( i=1; i<n-1; i++);
for ( j=n-2; j>0; j--)
{
if (arr[i][j]>max)
max =arr[i][j];
}
return max;
}Решение задачи: «Максимум на побочной диагонали, что не так в программе?»
textual
Листинг программы
int func(int **arr,int n)
{
int max=arr[0][n-1];
int i;
int j;
for( i=0; i<n; i++)
{
if (arr[i][n-1-i]>max)
max =arr[i][n-1-i];
}
return max;
}
Объяснение кода листинга программы
В данном коде функция func() находит максимальное значение в побочной диагонали матрицы arr[][], которая передается в качестве аргумента. Список действий в функции:
- Переменная max инициализируется значением arr[0][n-1].
- Переменные i и j инициализируются нулевыми значениями.
- Цикл for запускается n раз.
- В каждой итерации цикла, если значение arr[i][n-1-i] больше значения max, то max обновляется значением arr[i][n-1-i].
- После завершения цикла, функция возвращает значение max.