Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для hoot
101 / 22 / 7
Регистрация: 10.11.2010
Сообщений: 208

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

30.09.2011, 16:57. Показов 3006. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все доброго времени.

Начал создавать одномерный массив, потом решил его преобразовать в динамический одномерный.
Понимаю что проблема при указанни с клавы размерности, но как исправить не знаю.
Раскажите что и как. Желательно особо подробно.
Заранее все благодарен.

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
#include <iostream>
 
 
using namespace std;
 
int main()
{
setlocale(LC_ALL,"russian");
 
int z;
 
cout<<"Введите размер массива: ";
cin>>z;
 
int myArray[z];
int i;
for(i=0; i<5; i++)
{
    cout<<"Значение для занесение в массив["<<i<<"]:";
    cin>>myArray[i];
}
 
for(i=0;i<5;i++)
    cout<<i+1<<":"<<myArray[i]<<"\n";
 
system("pause");
return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.09.2011, 16:57
Ответы с готовыми решениями:

Ошибка при создании динамического массива
При создании динамического массива (матрицы) возникает ошибка Сам процесс создания выведен в процедуру. double** CreateMatrix(int...

Ошибка при создании динамического двумерного массива
Ткните пальцем, что не так. Только учусь, делаю лабы, камнями не забрасывайте. Смотрел шаблоны здесь и в других местах, но есть вопрос. ...

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

16
601 / 569 / 104
Регистрация: 07.11.2010
Сообщений: 2,004
30.09.2011, 17:04
память выделите под массив то
C++
1
2
int *MyArray;
MyArray = new int[z];
1
 Аватар для Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 17:11
Отредактировал Ваш код на скорую руку. Но ошибок вроде бы нет.
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"russian");
    int * myArray = NULL, z; 
    do{
        cout << "Введите размер массива: ";
        cin >> z;
    }
    while(z <= 0);
    myArray = new int [z];
    if(myArray == NULL){
        cout << "Память не захвачена." << endl;
        system("pause");
        return 1;
    }
    for(int i = 0; i < z; i++)
    {
        cout << "Значение для занесение в массив[" << i + 1 << "]: ";
        cin >> myArray[i];
    }
 
    for(int i = 0; i < z; i++)
        cout << i+1 << "-элемент: " << myArray[i] <<"\n";
 
    system("pause");
    delete[] myArray;
    return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
30.09.2011, 17:11
Не забудьте потом добавить
C++
1
delete[] MyArray;
в конце программы
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
30.09.2011, 17:14
Цитата Сообщение от Slimmy Посмотреть сообщение
C++
1
2
#include <iostream>
#include <clocale>
.....
1
 Аватар для Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 17:16
Без <clocale> также компилируется. Более того, даже работает.
1
 Аватар для hoot
101 / 22 / 7
Регистрация: 10.11.2010
Сообщений: 208
30.09.2011, 17:50  [ТС]
Все большое спасибо.

Цитата Сообщение от Slimmy Посмотреть сообщение
int * myArray = NULL, z;
Я правильно понимаю,что в выше записанном коде "NULL" означает что массив по умолчанию не имеет данных.
Или как понимать?
0
 Аватар для Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 17:54
Цитата Сообщение от hoot Посмотреть сообщение
Все большое спасибо.
Я правильно понимаю,что в выше записанном коде "NULL" означает что массив по умолчанию не имеет данных.
Или как понимать?
В данной строчке происходит так называемое "зануление" указателя. То есть происходит его инициализация. Дело в том, что под динамический массив идет выделение памяти и чтобы она была чистой, без "мусора", необходимо её "почистить".
1
 Аватар для hoot
101 / 22 / 7
Регистрация: 10.11.2010
Сообщений: 208
30.09.2011, 18:01  [ТС]
Понятно, спасибо)
Ты давно пишешь на с++?
1
 Аватар для Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
30.09.2011, 18:04
Цитата Сообщение от hoot Посмотреть сообщение
Понятно, спасибо)
Ты давно пишешь на с++?
Ну как Вам сказать... В университете С++ со второго курса пошел. Фактически - "программирую" год. Но в это программирование входило лишь выполнение лабораторных работ и больше ничего. Сейчас начал заниматься самостоятельно: книжки там читать всякие умные, упражнения делать. Вообщем, практиковаться.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
30.09.2011, 23:11
Цитата Сообщение от Slimmy Посмотреть сообщение
В данной строчке происходит так называемое "зануление" указателя. То есть происходит его инициализация. Дело в том, что под динамический массив идет выделение памяти и чтобы она была чистой, без "мусора", необходимо её "почистить".
Вы хотите сказать, что все элементы динамического массива инициализируются нулем при выделении памяти из-за того, что указатель имеет значение 0? Бред какой-то.

Добавлено через 10 минут
Операция new возвратит адрес на этот массив и этот адрес присвоится указателю. Никакого влияния нулевой указатель не окажет на выделение памяти под массив.
0
 Аватар для Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
01.10.2011, 09:18
Цитата Сообщение от Chelioss Посмотреть сообщение
Операция new возвратит адрес на этот массив и этот адрес присвоится указателю. Никакого влияния нулевой указатель не окажет на выделение памяти под массив.
Покажите, где написано, что я сказал, что всем элементам массива присваивается 0? Инициализация указателя нужна для того, чтобы гарантировать что по адресу этого указателя ничего не будет, то бишь "мусора".

Добавлено через 10 минут
Следовательно, при инициализации указателя макросом NULL мы будем уверены в том, что:
а) указатель никуда не ссылается;
б) его на данный момент нельзя использовать;
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
01.10.2011, 18:35
Цитата Сообщение от Slimmy Посмотреть сообщение
Дело в том, что под динамический массив идет выделение памяти и чтобы она была чистой, без "мусора", необходимо её "почистить".
Если еще не понятно, что вы сами написали, то перефразирую:
Цитата Сообщение от Slimmy Посмотреть сообщение
Дело в том, что под динамический массив идет выделение памяти и чтобы память была чистой, без "мусора", необходимо её "почистить".
Или вы под памятью понимаете указатель?
0
 Аватар для Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
01.10.2011, 18:37
Цитата Сообщение от Chelioss Посмотреть сообщение
Чистая память. Как еще по другому понимать?
Может сделаете усилие и прочитаете мое предыдущее сообщение. Порой, ответы на вопросы находятся ближе, чем Вы думаете.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
01.10.2011, 19:03
Цитата Сообщение от Slimmy Посмотреть сообщение
Может сделаете усилие и прочитаете мое предыдущее сообщение. Порой, ответы на вопросы находятся ближе, чем Вы думаете.
А может вы будете свои мысли излагать нормально? И зачем мне искать ответ? Вы вопрос что ли задавали? И самое главное - понял ли вас правильно ТС?
0
 Аватар для Slimmy
65 / 18 / 3
Регистрация: 09.10.2010
Сообщений: 97
01.10.2011, 19:05
Цитата Сообщение от Chelioss Посмотреть сообщение
А может вы будете свои мысли излагать нормально? И зачем мне искать ответ? Вы вопрос что ли задавали? И самое главное - понял ли вас правильно ТС?
Я постарался объяснить на пальцах, что, думаю, у меня и получилось. Суть осталась той же.
Что касается вопроса, то не я его задавал, а Вы сами. Предлагаю на этом закончить ни к чему не ведущую дискуссию.
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
01.10.2011, 19:06
Да и причем тут тогда выделение памяти? Какое отношение, инициализированный нулем, указатель имеет к выделению памяти?

Спор не бессмысленный. В след. раз вы возможно будете более понятнее излагать свои мысли, чтобы не путать других людей, которые эту всю информацию впитывают как губка.

Это называется критика.

Да и мне самому интересно. Вдруг это я не правильно понимаю суть, а в этом случае мне тогда все объяснять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2011, 19:06
Помогаю со студенческими работами здесь

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

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

Выводит ошибку при создании динамического массива стрктур
#include &quot;pch.h&quot; #include &lt;iostream&gt; using namespace std; struct psh { string abc; double l; }; int main(){ ...

String subscript out of range при создании динамического массива
Всем привет. Пишу игру на c++. Смысл состоит в том чтобы отстреливать группы врагов, которые появляются сразу после уничтожения предыдущей...

Ругается new при создании динамического массива через перегруженный конструктор
Перегрузил конструктор: class Library { public: Library(void) //конструктор библиотеки без заданного типа { ...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru