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

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

30.09.2011, 16:57. Показов 2849. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru