Я использую VC2010 express и вижу результат, которого я не могу понять. Мой код выглядит следующим образом:(VC2010 express) 2D-массив misbehaving
//
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
void main()
{
const int gridSize = 2;
int grid[gridSize][gridSize];
for(int x=1; x <= gridSize; x++){
for(int y=1; y <= gridSize; y++){
grid[x][y] = 0;
}
}
for(int i=0; i <= gridSize; i++){
grid[i][0] = 1; // set the horizontal line to 1's
grid[0][i] = 1; // set the vertical line to 1's
}
int rows = 0;
while(rows <= gridSize){
for(int i=0; i<=gridSize; i++){
cout << grid[i][rows] << " ";
}
cout << "\n";
rows++;
}
clock_t wait;
wait = clock();
while (clock() <= (wait + 500000)); // Wait for 500 seconds and then continue
wait=0;
}
Я ожидаю этот код, чтобы привести:
Вместо этого это приводит к:
Я не понимаю, как можно его для этого кода для заполнения сетки [1] [2] с 1. Любые мысли о том, что ?
EDIT: Не могу ответить на мой вопрос прямо сейчас. Но я решил проблему с решетчатыми решетками! :) Законченное с этим кодом, чтобы вычислить количество решеточных путей в сетке:
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
void main()
{
const int gridSize = 3;
int grid[gridSize+1][gridSize+1];
for(int i=0; i <= gridSize; i++){
grid[i][0] = 1; // set the horizontal line to 1's
grid[0][i] = 1; // set the vertical line to 1's
}
for(int x=1; x <= gridSize; x++){
for(int y=1; y <= gridSize; y++){
grid[x][y] = grid[x-1][y] + grid[x][y-1];
}
}
cout << "Amount of lattice paths for a " << gridSize << "x" << gridSize << " grid: " << grid[gridSize][gridSize];
clock_t wait;
wait = clock();
while (clock() <= (wait + 500000)); // Wait for 500 seconds and then continue
wait=0;
}
Спасибо за быстрый ответ :)
'i <= gridSize' в цикле for - мгновенный UB! Вы даже не должны платить за это! –
Просто начните свой день с отладчика :) – 0decimal0