我有问题。我正在创建一个矩阵计算器。我想要的是选择矩阵的大小。我有两个二维数组(a)和(b),我用整数填充数组。问题是整数(我保存在数组中的常数)没有出现,只是它们所在的位置。只是指针似乎没有取消引用。不知道怎么了。
void rotater(int* a,int* b,int select)
{
int* matrix;
if(select == 1)
{
for(int d = 0; d < i; d++)
{
for(int c = 0; c < j; c++)
{
cout << *(a+c) << *(a+d) << " ";
//if i choose the size as 2x2 this comes out as a
//matrix {11,12;21,22} just as positions not my
//numbers that i choose
}
cout << endl;
}
}
else if(select == 2)
{
for(int d = 0; d < y; d++)
{
for(int c = 0; c < x; c++)
{
cout << *(b+d) <<*(b+c) <<" ";
}
cout << endl;
}
}
}
int a[i][j];
int b[x][y];
int *matrix1 = &a[0][0];
int *matrix2 = &b[0][0];
cout << endl;
cout << "Choose_matrix: " << "(1,2,both)" << endl;
cin >> matrix;
f = matrix //I have function that changes char matrix to int f
cout << endl;
cout << "Choose_operand: " << "(rotr,rotl,+,-,*,/,diag)" << endl;
cin >> operand;
e = operand // I have function that changes char operand to int e
switch(e)
{
case 1:
rotater(matrix1, matrix2, f); // calling function with 3 parameters
break;
default:
return 0;
}
答案 0 :(得分:1)
首先,您正在使用C ++,因此应尽可能避免使用C样式数组和原始指针。我建议您使用std::vector<int>
,或者,因为您想要一个恒定的大小,std::array<int>
。
我不明白为什么在rotater
函数中包含两个数组。每个参数的逻辑相同,那里有很多冗余代码。
您在rotater
中的参数要求输入int*
,但是在调用该函数时,会给它一个int[][]
,它是另一种数据类型。
所有这些,您的代码中有很多东西,没有明确的功能。最重要的是,您没有包含main()
函数,因此我无法编译您的代码。如果是我,我将通过调试器运行您的程序,以了解发生了什么事。这就是我相信你要去的。
#include <iostream>
void matrix_display(int *mat, const int x_size, const int y_size)
{
for ( int x = 0; x < x_size; x++ )
{
for ( int y = 0; y < y_size; y++ )
{
std::cout << *(mat + x) << *(mat + y) << " ";
}
}
std::cout << std::endl;
}
int main()
{
const int X_SIZE = 2;
const int Y_SIZE = 2;
int matrix[X_SIZE*Y_SIZE] = {4, 7, 3, 7};
matrix_display(matrix, X_SIZE, Y_SIZE);
return 0;
}
再次,如果是我,我会使用std::array<std::array<int, 2>, 2>
而不是int*