Форум программистов, компьютерный форум CyberForum.ru

Ошибка "Выход за границу вектора" - C++

Восстановить пароль Регистрация
 
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
13.04.2011, 11:17     Ошибка "Выход за границу вектора" #1
Помогите пожалуйста, не пойму в чем дело, вывод массива по лекции сделал а на нем ошибка выход за границу вектора. Объясните плиз.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
typedef vector<int> row;
typedef vector<row> matrix;
 
void create_random (int n, matrix &A)
{
    row Row(n);
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            Row[j]=(rand()%2);
        }
        A.push_back(Row);
    }
}
 
void vivod (int n, matrix A)
{
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout<<A[i][j]<<'\t';
        }
        cout<<endl;
    }
}
 
int main()
{
    int n;
    srand((unsigned)time(NULL));
    setlocale(LC_ALL, "Russian");
    do
    {
        cout<<"Введите размер квадратной матрицы"<<endl;
        cin>>n;
    }
    matrix A(n);
    create_random (n,A);
    vivod(n,A);
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
13.04.2011, 11:24     Ошибка "Выход за границу вектора" #2
C++
1
matrix A(n);
(в функции main) изменить на
C++
1
matrix A;
fenix117
8 / 8 / 1
Регистрация: 16.03.2011
Сообщений: 249
13.04.2011, 11:28  [ТС]     Ошибка "Выход за границу вектора" #3
а можно так заполнять?
C++
1
2
3
4
5
6
7
8
void create (int n, matrix &A)
{
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
        {
            A[i][j]=(rand()%2);
        }
}
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
13.04.2011, 11:32     Ошибка "Выход за границу вектора" #4
C++
1
2
3
4
5
6
7
8
9
10
void create_random (int n, matrix &A)
{
    A.resize(n);
    for (int i=0; i<n; i++)
    {
        A[i].resize(n);
        for (int j=0; j<n; j++)
            A[i][j]=(rand()%2);
    }
}
Вот так можно тогда.
Либо выделить память и потом изменять ее содержимое, либо делать это одновременно с помощью push_back
Yandex
Объявления
13.04.2011, 11:32     Ошибка "Выход за границу вектора"
Ответ Создать тему
Опции темы

Текущее время: 14:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru