Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Изминение размера массива |
Автор: alexeikom 7.12.2008, 23:44 |
Всем привет, Вопрос у меня такой. Мне дан массив, я должен найти в нем одинаковые элементы, и соответственно их ликвидировать. Теперь мне нужно сократить размер массива (так как он уже без дублей). Как мне это сделать? а то в размере массива надо обязательно указывать константу. Помогите плиз...прога на си(программку я сделал, только вот с новым размером массива застрял). Заранее благодарен. |
Автор: Dmi3ev 8.12.2008, 00:01 |
работайте через указатели, в чем проблема? |
Автор: Remiznik 8.12.2008, 00:03 |
перепиши в другой масив с меньшим размером !! иначе думаю не получиться ) |
Автор: Dmi3ev 8.12.2008, 00:06 | ||||
как пример выделение памяти для 100 целых чисел Добавлено @ 00:10
Remiznik, хорошо, а как задать размер этого массива??? Заранее ведь неизвестно, сколько будет дублей ))) |
Автор: alexeikom 8.12.2008, 00:10 | ||||
А можно плиз пример, а то я в танке... ![]()
Вот в этом и проблема. Как его создать, когда его размер зависит от результата. Тоесть у меня был массив из 20 элементов. 4 ушло. Надо создать массив из 16. Так вот эти 16 мне заранее не известны (так-как это зависит от числа дублированных элементов массива). |
Автор: Remiznik 8.12.2008, 00:20 | ||
вот тут и используешь указатели ... когда получиш значение сколько осталось элементов создаёшь новый масив такоко размера и переписываешь туда значения! |
Автор: Dmi3ev 8.12.2008, 00:21 | ||||
а можно вот так, а обращаться потом вот так:
должно быть ясно, а вообще можно и почитать немного. |
Автор: alexeikom 8.12.2008, 00:22 |
http://forum.vingrad.ru/topic-189118.html самые первый пример с так называемым динамическим массивом, когда его размер задается не-константой. Такое возможно? Добавлено через 9 минут и 33 секунды Вообщем я так понял без указателей никак? |
Автор: Dmi3ev 8.12.2008, 00:32 | ||||
Тебе же говорят тут русским языком. Ты попробовал? не получилось? => Надо действовать так, как дальше в статье говорится или как я посоветовал, что одно и тоже)) Добавлено через 13 минут и 46 секунд
мне на ум это пришло срузу))) динамический массив - значит указатели. Это очень удобно, хотя немного мудренно кажется по началу, я Вас прекрасно понимаю))) Но надо не бояться использовать их в таких ситуациях. |
Автор: alexeikom 8.12.2008, 00:49 | ||
Я и хотел это узнать...с указателями я понял...Просто мы в институте еще указатели не проходили, и я подумал, что может можно обойтись без них...но если нет, то все ок... Большое спасибо за помощь! ![]() |
Автор: Rickert 8.12.2008, 06:24 |
Если вы в институте ещё не проходили указатели, а вас попросили написать такую программу, ты вы неверно поняли задание. наверное оно звучало примерно так: "Найти в массиве все одинаковые значения и вывести на экран массив уже без них, т.е. с одной копией каждого числа." В таком случае у вас нет необходимости работать с дин. массивами, всё что вам нужно - это создать два одинаковых по размеру массива, первый - изначальный, а второй - который будет содержать все элементы в одном экземпляре. Очевидно, что второй массив юудет либо равен, либо меньше по размеру первого. |
Автор: bsa 8.12.2008, 12:57 | ||
А зачем вообще менять размер массива? Кто и где это сказал? Надо лишь переставить элементы так, чтобы массив был непрерывным. А это делается примерно так:
|
Автор: REZiaMIX 8.12.2008, 13:05 |
Странно , обычно везде кричат , буст , стл. Почему до сих пор никто не предложил использовать контейнеры stl ??? erase - и нету элемента. Да и удаление дубликатов обойдется в пару строк. Если конечно не стоит четкая задача использовать массивы. |
Автор: Dmi3ev 8.12.2008, 16:47 |
REZiaMIX, я, допустим, не знаю, есть ли все эти прелести в си, поэтому и не предлагал использовать контейнеры vector, list и тд |
Автор: bsa 9.12.2008, 11:54 |
а я уверен, что их там нет ![]() REZiaMIX, читай внимательно первый пост - там русским языком написано, каким языком человек пользуется. |