2017-02-27 53 views
-1

我学会了一个程序,根据用户输入创建数组数。但是现在我想要为矩阵(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

使用'的std ::向量<性病::向量<性病::矢量 >>'会减少这短短的参考代码行将更安全。请注意,使用'new []'的代码的主要缺陷是,如果'new []'在所有创建逻辑中间引发异常,那么如何通过调用'delete []'来“回滚”? – PaulMcKenzie

回答

0

首先,PaulMckenzie是正确的在他们的评论,你真的应该使用std :: vector的,而不是直接使用堆的指针,它要简单得多。

另外我真的不知道你的问题是什么,所以这里有一些评论。

这是一个矩阵,如果每行可以有不同数量的元素?这对我来说只是一个概念性的东西,截至目前它只是一个列表清单。如果这就是你想要的酷,但如果你想要一个矩阵,你需要在尺寸上更严格。

代码没有任何客观错误,我会说这个问题真的不属于这里。代码没有问题,如果有请明确说明问题是什么。

编辑:我看你要适应它的矩阵,真的,如果你想练只使用的std ::矢量

编辑制作矩阵类,我会说:我的意思是什么创建矩阵类是从字面上看。定义一个矩阵类类型,它将处理给定维数矩阵的所有通用操作,然后你的main需要所有那些循环和迭代来创建矩阵。你只需将它们存储与 std::vector<Matrix> matricies; matricies.push_back(Matrix(2,3))

这里是C++类http://www.cplusplus.com/doc/tutorial/classes/

+0

基本上我需要一个程序来根据用户输入定义(创建)矩阵的数量并将元素存储在其中。 –

+0

像用户应该输入,他想创建四个矩阵,然后根据用户输入矩阵应创建。然后用户将这些元素存储在创建的矩阵中 –