首页 > 解决方案 > 我的程序没有运行,多维向量函数

问题描述

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

我无法纠正错误:

#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();

}

标签: c++

解决方案


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))

虽然iand的值j只是 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);

推荐阅读