Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 25.03.2010, 17:27   #1
supra89kren
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 19
Смущение Динамический массив

Задали такую задачу
Нужно сделать так
Услови: присваиваем n,m раномные значения от 1-100
где N это прозвольный размер динамического массива а М это количествоэлементов которые мы должны занести в масиив с количчеством элементов N. и если n>m значит надо уменьшить размер масива до м
а если N<m то увеличить размер массива до m.
можно было бы создать и сразу динам масив с длиной м но здесь всё соль в том что бы показать что я умею изменять размер массива в процесе программы , всем кто поможет величайшое спасибо, программа фанарёвая но я синтаксически её не могу записать...=(
я не фсехда пишу прафельно, но са смыслам.=)
supra89kren вне форума Ответить с цитированием
Старый 25.03.2010, 18:20   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Примерно так:
Код:
int* array = new int[10];
int* newarray = new int[20];
for (int i = 0; i < 10; i++)
 newarray[i] = array[i];
delete[] array;
array = newarray;
То бишь изменение размера массива - это удаление старого и создание нового с копированием элементов.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 25.03.2010, 19:47   #3
supra89kren
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 19
По умолчанию

можно вопросик?
1.int* array = new int[10];
2.int* newarray = new int[20];
3.for (int i = 0; i < 10; i++)
4. newarray[i] = array[i];
5.delete[] array;
6.array = newarray;

что в первой и второй строчке означает int* . int просто это интежер а вот со * хз=)
и я ещё не совсем пойму 6-ю строчку....
я не фсехда пишу прафельно, но са смыслам.=)
supra89kren вне форума Ответить с цитированием
Старый 25.03.2010, 20:17   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

* - указатель на ячейку памяти( её адрес)
int* значит указатель на тип int

int* array = new int[10];
создаются 10 указателей( массив из 10 элементов)

6)array = newarray;
после освобождения памяти командой delete [] array,
ему присваивается новый массив размер которого 20.

1,2,3,4,5,6 :
1)создал массив из 10 элементов и вдруг появилась такая необходимость увеличить размер его до 20 элементов
2)создал новый массив из 20 элементов
3,4 ) скопировал данные из первого массива в новый
5) освободил память под первый массив
6) присвоил ему указатель на массив из 20 элементов
в итоге массив размером 10 эл-ов расширили до 20 эл-ов

Последний раз редактировалось NiCola999; 25.03.2010 в 20:21.
NiCola999 вне форума Ответить с цитированием
Старый 25.03.2010, 20:23   #5
supra89kren
Пользователь
 
Регистрация: 25.03.2010
Сообщений: 19
По умолчанию

знал бы где нажать тебе спасибо нажал бы раз 10=))спс биг чел=)
я не фсехда пишу прафельно, но са смыслам.=)
supra89kren вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив Zhanna5006 Помощь студентам 7 10.01.2010 14:09
Динамический массив Ueshua Общие вопросы C/C++ 3 19.12.2009 22:12
Динамический массив Vito89 Помощь студентам 1 20.10.2009 00:55
Динамический массив Lemo Помощь студентам 5 16.09.2009 05:26
Динамический массив. Mickle Помощь студентам 9 21.06.2007 19:31


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя