我的程序未运行,多维矢量功能

时间:2019-01-09 07:28:26

标签: c++

我有问题,有时候我们都会做。 我的程序(我将用于学术目的)没有运行,我是编程新手。我应该修改什么?

我无法纠正错误:

#include <stdio.h>

using namespace std;
//Maximul din triunghiul de deasupra diagonalelor unei matrice
int maximdiag(int x[5][5])
{
    int i, j, m = 5, max = 0;
    //elementele din triunghiul de deasupra diagonalelor
    for (i = 0; i < (m - 1) / 2; i++)
        for (j = i + 1; j < m - 1 - i; j++)
        {
            if (x[i][j] >= max)
                max = x[i][j];
        }

    return max;
}

void main()
{
    int a[5][5], z, n = 5, i, j;
    //citire de la tastatura matrice
    for (i = 0; i < 5; i++)
        for (j = 0; j < 5; j++)
        {
            printf("x[%i][%i]= ",i, j);
            scanf_s("%i", &a[i][j]);

        }
    //apelare functie
    //z = maximdiag(a[5][5]);
    printf("Valoarea maxima din triunghiul de deasupra diagonalelor este a[%i][%i]= ", maximdiag(a[5][5]));
    _getch();

}

1 个答案:

答案 0 :(得分:1)

maximdiag(a[5][5])用索引maximdiag(不存在)中的数组a的元素调用[5][5]

要将数组传递给函数,只需调用:maximdiag(a)

您还向带有格式字符串的printf传递了一个参数,该字符串需要2个参数。大概纠正后的代码应该是这样的:

printf("Valoarea maxima din triunghiul de deasupra diagonalelor este a[%i][%i]=%i ", i, j, maximdiag(a))

尽管ij的值只是5,所以如果要获取最大值的索引,则需要从maximdiag函数返回它们:

int maximdiag(int x[5][5], int& maxI, int& maxJ)
{
    int i, j, m = 5, max = 0;
    //elementele din triunghiul de deasupra diagonalelor
    for (i = 0; i < (m - 1) / 2; i++)
        for (j = i + 1; j < m - 1 - i; j++)
        {
            if (x[i][j] >= max)
            {
                max = x[i][j];
                maxI = i;
                maxJ = j;
            }
        }

    return max;
}

int maxI;
int maxJ;
int max = maximdiag(a, maxI, maxJ);
printf("Valoarea maxima din triunghiul de deasupra diagonalelor este a[%i][%i]=%i ", maxI, maxJ, max);