Массив неивестной длины C++ |
Здравствуйте, гость ( Вход | Регистрация )
Here You Can Support Our Work and .:LavTeaM:. Services |
Массив неивестной длины C++ |
30.09.2007 - 13:16
Сообщение
#1
|
|
Прохожий Группа: Пользователи Пользователь №: 22862 Сообщений: 27 Регистрация: 5.11.2005 Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
Вобщем стоит задача:
Пользователь вводит ряд чисел, причём не известно вообще какой длины ряд, потом пользователь вводит определённый символ, обозначающий конец ряда и далее идёт математика, так вот не могу сообразить как реализовать этот массив неизвестного размера. Помогите пожалусто, заранее спасибо. |
|
|
1.10.2007 - 05:20
Сообщение
#2
|
|
Завсегдатай Группа: Пользователи Пользователь №: 32334 Сообщений: 114 Регистрация: 17.04.2006 Из: Якутия Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 18 раз(а) |
Сделай проверку: если введено число - наращиваешь размер массива на единицу, если символ окончания ввода - переход дальше. Да и вообще решений можно придумать немеряно, задачка простая.
|
|
|
1.10.2007 - 16:43
Сообщение
#3
|
|
Прохожий Группа: Пользователи Пользователь №: 22862 Сообщений: 27 Регистрация: 5.11.2005 Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
А можно пример кода как реализовать удлинение массива на единицу?Вот именно в этом у меня загвоздка, не знаю как удлинить массив. : (
Сообщение отредактировал Vladi - 1.10.2007 - 16:44 |
|
|
1.10.2007 - 18:36
Сообщение
#4
|
|
The Last Gunslinger Группа: Пользователи Пользователь №: 6829 Сообщений: 1008 Регистрация: 26.04.2004 Из: Беларусь, Гомель Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 10 раз(а) |
Допустим, пользователь вводит числа, разделяя их пробелами. Пробегаешь по строке и считаешь пробелы - вот тебе количество чисел, например, N.
Далее делаешь так: Код int *Mas; Mas = (int *)malloc(N); Здесь создается динамический массив на N элементов. Если нужно изменить его размер на другое число, используешь функцию realloc. Когда закончишь работу с массивом, не забудь сделать Код free(Mas);
|
|
|
7.10.2007 - 17:52
Сообщение
#5
|
|
Прохожий Группа: Пользователи Пользователь №: 23425 Сообщений: 49 Регистрация: 11.11.2005 Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
ну вот например класс для типа int (чтоб сделать уникалиный, пользуйся шаблонами):
Код class DynArray { public: DynArray(int alloc = 8) { data = (int*)malloc(sizeof(int) * alloc); size = 8; num = 0; } ~DynArray() { clear(); } void clear() { if (data) { delete data; data = NULL; } size = num = 0; } int operator[](int id) { return data[id]; } void push(int v, int alloc = 8) { if (num >= size) { int *newdata = (int*)malloc(sizeof(int) * (size + alloc)); memcpy(newdata, data, sizeof(int) * num); data = newdata; } else data[num] = v; } int size, num, *data; }; пользоваться так: DynArray a; a.push(2); a.push(4); a.push(7 + 8); printf("%d", a[2]); |
|
|
8.10.2007 - 15:24
Сообщение
#6
|
|
Прохожий Группа: Пользователи Пользователь №: 22862 Сообщений: 27 Регистрация: 5.11.2005 Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 0 раз(а) |
Fallcom
Спасибо, получилось. |
|
|
Текстовая версия | Сейчас: 30.03.2024 - 06:44 |