-3

我只是一个初学者,C++我想编写一个输入然后显示 order 矩阵的程序i * j。我已经编写了以下程序,但它不起作用。

请指导我。

我认为可能是访问方法不正确或类似的东西。

这是程序:

#include <iostream>

using namespace std;

int main() {
  int i = 0,j = 0;

  cout << "Enter no of rows of the matrix";
  cin >> i;
  cout << "Enter no of columns of the matrix";
  cin >> j;

  float l[i][j];

  int p = 0, q = 0;

  while (p < i) {
    while (q < j) {
      cout << "Enter the" << p + 1 << "*" << q + 1 << "entry";
      cin >> l[p][q];

      q = q + 1;
    }
    p = p + 1;
    q = 0;
  }
  cout << l;
}
4

2 回答 2

2

你不能定义一个可变长度的数组。您需要定义一个动态数组或 std::vector

#include<vector>
std::vector<std::vector<int> > l(i, std::vector<int>(j, 0));

并且cout << l只会打印出 a 的值int**。要打印出每个单独的整数,您需要对它们中的每一个进行循环。

for(int x = 0; x < i; ++i){
   for(int y = 0; y < j; ++y){
     cout << l[x][y] << " "
   }
   cout << "\n";
}
于 2013-10-12T17:09:31.433 回答
1

我重写了你的代码:(而不是 alloc 最好在 c++ 中使用 new ,并使用 delete 来释放内存)

#include "stdafx.h"
#include<iostream>
#include <conio.h>
    using namespace std;
int _tmain()
{
    int row,col;

cout<<"Enter no of rows of the matrix";
cin>>row;
cout<<"Enter no of columns of the matrix";
cin>>col;

float** matrix = new float*[row];
for(int i = 0; i < row; ++i)
    matrix[i] = new float[col];
int p=0,q=0;

for(unsigned i=0;i<row;i++) {
    for(unsigned j=0;j<col;j++) {
        cout<<"Enter the"<<i+1<<"*"<<j+1<<"entry";
        cin>>matrix[i][j];
    }
}

for(unsigned i=0;i<row;i++) {
    for(unsigned j=0;j<col;j++) {
        cout<<matrix[i][j]<<"\t";
    }
    cout<<endl;
}

    getch();
    return 0;
}
于 2013-10-12T17:28:10.903 回答