2013-03-19 4 views
0

Я делаю эту программу на C++. Я хочу построить таблицу со случайными строками и тремя столбцами. Когда я компилирую, нет ошибки, но я выполняю программу, ничего не делаю и ничего не пишу. Можете ли вы помочь мне найти мою ошибку?Многомерный динамический вектор памяти C++

Благодаря

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; 
} 
} 

я получаю еще одну проблему он пишет то же значение для всех столбцов. Так что мне нужно что-то изменить в моей петле?

+0

Что происходит, когда вы выполняете свою программу в отладчике? – Johnsyweb

ответ

1

Есть пара вопросов, вы должны использовать size_t для петель вместо 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; 
    } 
} 

Кроме того, вы имели в виду писать в той же позиции, в три раза, какова цель этого? Кроме того, вы выводите одну и ту же запись три раза. Я изменил только выход один раз:

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 явно.

+0

Это не очень важно в большинстве случаев, но, возможно, вы также хотели бы отметить, что следует использовать MAX_RANGE для обеспечения равномерного распределения ваших случайных чисел, теперь у вас слегка искаженное распределение. – 4pie0

+0

теперь что-то появляется. Но у меня есть проблема, что он пишет все время в 3 раза то же самое, что и 000111222 ... – usertfwr

+0

size_t - это просто typedef int (без знака) – TravellingGeek

Смежные вопросы