Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Buzzz
0 / 0 / 0
Регистрация: 04.11.2015
Сообщений: 2
1

Ошибка при создании динамического двумерного массива

04.11.2015, 22:07. Просмотров 182. Ответов 1
Метки нет (Все метки)

Ткните пальцем, что не так.
Только учусь, делаю лабы, камнями не забрасывайте. Смотрел шаблоны здесь и в других местах, но есть вопрос.
Задание. Создать двумерный массив, далее манипуляции с ним.
Написал код, но при указании количества колонок меньше количества строчек ошибка bad_acces.
Пробовал в студии и в икскоде, исход один и тот же.
Код:
Кликните здесь для просмотра всего текста
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
using namespace std;
 
int main()
{
    srand((unsigned)time(NULL));
    int a = 0;
    int b = 0;
    int i = 0;
    cout << "rows= ";//input
    cin >> a;
    cout << "collums= ";
    cin >> b;
    float **array;
    
    array = new float* [b];//creating [a][b]
    for (i = 0; i < a; i++)
    {
        array[i] = new float[a];
    }
    int j = 0;
    int k = 0;
    for (k = 0; k < a; k++)//insert random numbers for [a][b]
    {
        for (j = 0; j < b; j++)
        {
            array[j][k] = rand()%10;
        }
    }
    for (k = 0; k < a; k++)//out [a][b]
    {
        for (j = 0; j < b; j++)
        {
            cout << "[ " << array[j][k] << "] ";
        }
        cout << endl;
    }
    
    array[rand()%a][4] = 2012;//change target value
    cout << "\n\n";
    
    cout << "Changing random element from 5th row to '2012'\n\n";
    for (k = 0; k < a; k++)//[a][b] after value change
    {
        for (j = 0; j < b; j++)
        {
            if (array[j][k] < 10)
            {
                cout << "[   " << array[j][k] << "] ";
            }
            else if (array[j][k] < 99)
            {
                cout << "[  " << array[j][k] << "] ";
            }
            else if (array[j][k] < 999)
            {
                cout << "[ " << array[j][k] << "] ";
            }
            else
            {
                cout << "["<< array[j][k] << "] ";
            }
        }
        cout << endl;
    }
    
    float val = 0;//inserting value a into random position
    cout << "value a = ";
    cin >> val;
    array[rand()%a][rand()%b] = val;
    
    for (k = 0; k < a; k++)//[a][b] after inserting a
    {
        for (j = 0; j < b; j++)
        {
            if (array[j][k] < 10)
            {
                cout << "[   " << array[j][k] << "] ";
            }
            else if (array[j][k] < 99)
            {
                cout << "[  " << array[j][k] << "] ";
            }
            else if (array[j][k] < 999)
            {
                cout << "[ " << array[j][k] << "] ";
            }
            else
            {
                cout << "["<< array[j][k] << "] ";
            }
        }
        cout << endl;
    }
    for (int i = 0; i < a; i++)
    {
        delete []array[i];
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2015, 22:07
Ответы с готовыми решениями:

Ошибка при создании динамического массива.
Все доброго времени. Начал создавать одномерный массив, потом решил его...

Ошибка при удалением двумерного динамического массива
Задача состоит в том, чтобы загрузить массив из файла 17 0 0.40 10 0.3 20...

Ошибка при компиляции двумерного динамического массива указателей
Нужно создать двумерный динамический массив указателей собственного типа...

Ошибка при создании двумерного массива из объектов производных классов
Доброго времени суток. Для начала обрисую ситуацию. Мне нужно динамически...

Ошибка заполнения динамического двумерного массива
При заполнении массива mas происходит выход за границы массива. По ходу...

1
zss
Модератор
Эксперт С++
7230 / 6687 / 4232
Регистрация: 18.12.2011
Сообщений: 17,644
Завершенные тесты: 1
04.11.2015, 22:18 2
Цитата Сообщение от Buzzz Посмотреть сообщение
C++
1
2
 array = new float* [b];//создали b штук указателей для каждой строки
    for (i = 0; i < a; i++) // для каждого из b штук надо выделить память
причем тут переменная "a"? Заменяйте на b
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2015, 22:18

Ошибка описания динамического двумерного массива
#include &lt;iostream&gt; using namespace std; int main() { int x, y, i,...

Ошибка при создании 2-го элемента динамического списка
НЕ могу понять откуда как исправить данную ошибка . Выскакивает как мне кажется...

Почему при создании динамического массива через new ячейки массива имеют значение -842150451?
Я хотел бы узнать почему при создании динамического массива через операцию new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru