我自己通过解决不同的问题来学习C ++。 我试图解决最初为C ++中的Pascal设计的问题。 它应该要求用户输入3个整数M,N和q。 然后它应该生成大小为MxN的2d整数数组,其中(I = I,... M)行的所有元素将是几何级数的成员,第一个元素等于行数(I)和分母q。
我想创建一个动态的大规模,但我意识到它不会真正适用于两个未定义的整数。所以,我尝试了矢量。我想我是以正确的方式创造它们的,但我不知道如何制作几何级数。
这是我的代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int m, n, q;
cout << "Enter the number for M \n";
cin >> m;
if (cin.fail())
{
cin.clear();
cin.ignore();
cout << "This is not a number! " << endl;
system("pause");
return 0;
}
cout << "Enter the number for N \n";
cin >> n;
if (cin.fail())
{
cin.clear();
cin.ignore();
cout << "This is not a number! " << endl;
system("pause");
return 0;
}
cout << "Enter the number for Q \n";
cin >> q;
if (cin.fail())
{
cin.clear();
cin.ignore();
cout << "This is not a number! " << endl;
system("pause");
return 0;
}
int** matrix;
matrix = new int*[m];
for (int i = 0; i < m; i++)
matrix[i] = new int[n];
for (int i = 0; i < m; i++)
{
matrix[i][0] = i + 1;
}
for (int i = 0; i < m; i++)
{
for (int j = 1; j < n; j++)
{
matrix[i][j] = (i + 1)*pow(i, j);
cout << matrix[i][j];
}
}
system("pause");
return 0;
}
答案 0 :(得分:0)
注意:你可以创建一个可变大小的二维数组,虽然它涉及内存分配并且有点难看。
int** matrix;
matrix = new int*[M];
for (int i = 0; i < M; i++)
matrix[i] = new int[N];
这是创建大小为MxN的数组的代码。 别忘了像这样解除你的记忆:
for (int i = 0; i < M; i++)
delete matrix[i];
delete matrix;
至于你关于几何级数的问题,我不确定你在问什么。当你说几何级数时你是指2 10 50 250
等等的东西吗?我不确定你的意思是“行”,因为你没有在你的代码中引用任何这样的变量。
修改的
因此,一旦创建了MxN矩阵,就迭代遍历行并初始化行,如下所示:
for (int i = 0; i < M; i++)
{
matrix[i][0] = i+1;
}
这应该将每行的第一列设置为正确的数字。 那么沿着这条线的东西应该填补其余的几何级数:
for (int i = 0; i < M; i++)
{
for (int j = 1; j < N; j++)
{
matrix[i][j] = (i+1)*pow(r,j);
//note that you'll probably have to do some typecasting
//p.s. I'm not 100% sure that this is the correct formula
}
}
我认为这就是你要找的东西。让我知道它是否有效,因为我自己没有测试过它。
像这样打印矩阵:
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
std::cout << matrix[i][j] << " ";
}
std::cout << "\n";
}