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_t代わりにループに使用する必要がintあり、ループ内で1つずつ処理していました。たとえば、次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回書き込むつもりでしたが、その目的は何でしたか?また、同じエントリを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 に答える