0

我用 C++ 做这个程序。我想建立一个随机行和 3 列的表。当我编译时没有错误,但我执行程序什么也不做,什么也不写。你能帮我找出我的错误吗?

谢谢

int main(){
srand(time(0));
int project = (rand() % 5) + 1 ;   
std::cout << "The Number is " << project << "." << std::endl;

vector<vector<int> > P(project, vector<int>(3));

for(int i = 0; i <= P.size(); ++i){
  for(int j = 0;j <= P[i].size();++j){
        P[i][j] = (rand() % 50)+10;
        P[i][j] = (rand() % 2)+1;
        P[i][j] = (rand() % 50)+1;
  }
 }

 for(int a = 0;a <= P.size();++a){           
  for(int j = 0;j <= P[a].size();++j){
      std::cout << "Project "<< a <<" :"<< P[a][j] ;
        std::cout << P[a][j] <<" , ";
        std::cout << P[a][j] <<" ."<< std::endl;  
 }
 }

我遇到另一个问题,它为所有列写入相同的值。所以我需要在我的循环中改变一些东西吗?

4

1 回答 1

1

有几个问题,您应该使用size_tfor 循环而不是循环中int的一个。例如,它应该i < P.size()代替i <= P.size()

for(size_t i = 0; i < P.size(); ++i)
{
  for(size_t j = 0;j < P[i].size();++j)
  {
    P[i][j] = (rand() % 50)+10;
    P[i][j] = (rand() % 2)+1;
    P[i][j] = (rand() % 50)+1;
  }
 }

另外,你的意思是写三遍同一个条目,那是什么目的?此外,您还将输出相同的条目 3 次。我修改为只输出一次:

for(size_t a = 0;a < P.size();++a)
{           
 for(size_t j = 0;j < P[a].size();++j)
 {
   std::cout << "Project "<< a <<" :"<< P[a][j] << std::endl;  
 }
}

另外,如果您using namespace std的代码中有,我建议您不要这样做。只需std::vector明确使用。

于 2013-03-19T02:50:56.633 回答