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();
}
解决方案
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))
虽然i
and的值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);
推荐阅读
- r - Spotify API - 为某些请求任意返回“原始”数据类
- bash - 将两个多行输出合并/合并为一个“lineFromA:lineFromB”
- sas - 检查数据集是否存在
- css - 如何在 flexbox 设计中发生中断之前定位最后一个元素?
- algorithm - 将有序的事件序列合并到表中
- javascript - Javascript:构建收银机功能并遇到浮点问题
- c++ - 在这种情况下我们可以使用静态而不是朋友吗?其他解决方案是什么
- mysql - MariaDB CSV 输出限制
- java - 用于数字、逗号和点的 JTextField 或 JFormattedTextField?
- heroku - Heroku+BItbucket 部署:更新被拒绝,因为您当前分支的提示落后于提示:它的远程对应项