我已经学会了一个根据用户输入创建多个数组的程序。但现在我想要为矩阵创建数组(2D)以保存矩阵元素。
用户应输入他想要的矩阵数和每个矩阵的大小,并输入相应的数字。
这是我研究的正常代码。我希望它可以用于矩阵。
#include <iostream>
int main()
{
unsigned int n;
std::cout << "Enter number of arrays: ";
std::cin >> n;
double** array = new double*[n];
unsigned int* sizeOfInnerArrays = new unsigned int[n];
for (int i = 0; i < n; ++i)
{
std::cout << "Enter size of array " << i << ": ";
std::cin >> sizeOfInnerArrays[i];
array[i] = new double[sizeOfInnerArrays[i]];
for (int j = 0; j < sizeOfInnerArrays[i]; ++j)
{
int element;
std::cout << "Enter element " << j << " of array " << i << ": ";
std::cin >> element;
array[i][j] = element;
}
}
//prints out each array as curly-brace enclosed sets of doubles
for (int i = 0; i < n; ++i)
{
std::cout << "{";
for (int j = 0; j < sizeOfInnerArrays[i] - 1; ++j)
{
std::cout << array[i][j] << ", ";
}
std::cout << array[i][sizeOfInnerArrays[i] - 1] << "}" << std::endl;
}
// free dynamically allocated memory
for (int i = 0; i < n; ++i)
{
delete [] array[i];
}
delete[] array;
delete[] sizeOfInnerArrays;
return 0;
}
答案 0 :(得分:0)
首先,PaulMckenzie在他们的评论中是正确的,你应该使用std :: vector而不是直接使用堆指针,它更简单。
我也不知道你的问题是什么,所以这里有一些评论。
如果每行可以有不同数量的元素,这是一个矩阵怎么样?这对我来说只是一个概念性的事情,截至目前它只是一个列表清单。如果这是你想要的酷,但如果你想要一个矩阵,你需要在尺寸上更严格。
代码没有任何客观上的错误,我会说这个问题真的不属于这里。代码没有问题,如果有问题请明确说明问题是什么。
编辑:我看到你想让它适应矩阵,我想说如果你想练习只需用std :: vector 制作一个矩阵类编辑:我的意思是创建一个矩阵类就是字面意思。定义一个矩阵类类型,它将处理给定维数矩阵的所有泛型运算,然后你的主要确实需要所有那些for循环和迭代来创建矩阵。你只需要存储它们
std::vector<Matrix> matricies; matricies.push_back(Matrix(2,3))