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

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

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

Ткните пальцем, что не так.
Только учусь, делаю лабы, камнями не забрасывайте. Смотрел шаблоны здесь и в других местах, но есть вопрос.
Задание. Создать двумерный массив, далее манипуляции с ним.
Написал код, но при указании количества колонок меньше количества строчек ошибка bad_acces.
http://www.cyberforum.ru/cpp-beginners/thread358632.html
Пробовал в студии и в икскоде, исход один и тот же.
Код:
Кликните здесь для просмотра всего текста
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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка при создании динамического двумерного массива (C++):

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

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

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

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

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

1
zss
Модератор
Эксперт С++
6952 / 6514 / 4135
Регистрация: 18.12.2011
Сообщений: 17,179
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

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

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

Ошибка с удалением памяти от динамического двумерного массива
Вечер в хату, форумчане, помогите пжлст, не могу понять как исправить ошибку....

передача параметров в конструктор при создании динамического массива
Добрый день! Есть довольно тривиальный класс: class Array1d{ int*...


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

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

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