Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2009, 19:40   #11
Neymexa
Proffesional
Форумчанин
 
Аватар для Neymexa
 
Регистрация: 18.11.2008
Сообщений: 417
По умолчанию

Цитата:
Сообщение от Kostia Посмотреть сообщение
I : array [1..m*n] of ^integer;
Честно говоря я не вижу смысла заводить массив указателей, вот указатель на массив это да, но не наоборот.
of ^integer; - это значит что указывает на 32 бита информации в памяти, если ничего не напутал
[1..m*n] - массив от 1 до m*n, m и n должны быть константы.
благодарю!!!
О, степь родимая, как я скучаю по тебе...
Neymexa вне форума Ответить с цитированием
Старый 17.01.2009, 20:15   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Kostia, +1
да. Точно. в данном случае делать массив из указателей - бессмысленно!

Размер, который занимает в памяти Integer - 2 байта
а указатель занимает - 4 байта.
и спрашивается - что мы экономим? :-)


Код:
var
  I : integer;
  G : ^Integer;
  P : Pointer;
begin
  WriteLn('Size of Integer = ',SizeOf(I),'  Size of ^Integer = ',SizeOf(G),
    '  Size of Pointer = ',SizeOf(P));
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.01.2009, 20:40   #13
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

я не понимаю, а причем тут флуд? почему мне выдали нарушение за флуд? за мой способ решения?? я че-то не вкатываю
capta1n вне форума Ответить с цитированием
Старый 17.01.2009, 21:00   #14
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

и что дальше, что длина указателя 4 байта - нашел - хорошо, ну кто говорил об экономии - где в условии написано, что надо экономить память? во-вторых, в условии четко написано, что надо использовать указатели! это два, а ,в-третьих, заранее неизвестно, сколько в массиве Б будет содержаться элементов, схожих с элементами массива А - гораздо удобнее и проще и правильней использовать динамическую память, чем объявлять сходу статически, как делается обычно дилетантами типа ...
к чему тут ваши притензии и чем они вызваны - я не знаю задача решена и программа работает - значит она решена правильно, и я доволен .
Девушка попросила сделать задачу с указателями - я сделал задачу с указателями и динамической памятью, а вы прикопались к тому, что ее нет смысла делать, потому что у вас там какие-то притензии совершенно от "большого" ума условие задачи почитайте и читайте книг побольше
PSS - да и если вы не знаете, что такое массив указателей и в чем разница между массивом указателей и указателем на массив - прямая дорога в школу )

Последний раз редактировалось capta1n; 17.01.2009 в 21:48. Причина: дополнил
capta1n вне форума Ответить с цитированием
Старый 17.01.2009, 21:29   #15
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

да, и я понял, за что предупреждение вынесли - теперь буду пользоваться ПРАВКОЙ, извиняюсь

Последний раз редактировалось capta1n; 17.01.2009 в 21:42.
capta1n вне форума Ответить с цитированием
Старый 17.01.2009, 22:00   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
PSS - да и если вы не знаете, что такое массив указателей и в чем разница между массивом указателей и указателем на массив
да как раз Вы этого и не знаете... :-(
Почитайте свой код, подумайте, например,
чем такая запись:
Код:
I : array [1..m*n] of ^integer; {Вот массив указателей}
отличается от такой:
Код:
type
  TArr = array [1..m*n] of integer;
  PTarr = ^TArr;
var
  I : PTArr;
Увидите разницу - честь Вам и хвала, нет - ну ничего, это пройдёт со временем (надеюсь ;-)

я уже не говорю, о том, что по всем правилам выделенную под динамические объекты память надо обязательно освобождать! (в случае выделения памяти через NEW() надо осводождать её через Dispose() )

Короче. считаете себя Богом в программировании, а выполненное решение - безупречным - тогда мне остаётся Вам только посочувствовать... :-)
Опять таки повторюсь, я делаю поправки ИСКЛЮЧИТЕЛЬНО для того, чтобы тот, кто найдёт эту тему по поиску, не повторял сделанных ошибок.

___________________________________ _______________

А больше всего обидно, что Катюшеньке от нашей дискуссии не холодно, не жарко.. ей код на C нужен...
;-(
Господа, ну кто C знает, напишите, пожалуйста.. Задача же простая! Неужто надо мне C выучить, чтобы только девушку в этом бурном потоке поиска истины не бросать?! ;-)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.01.2009, 22:19   #17
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Цитата:
я уже не говорю, о том, что по всем правилам выделенную под динамические объекты память надо обязательно освобождать! (в случае выделения памяти через NEW() надо осводождать её через Dispose() )
Вот это я и без вас хорошо знаю, только в данной задаче не требуется освобождать память, ибо мы выделяем ее строго для нужных элементов - лишних нету, которые нам не нужны dispose обычно используют в списках, деревьях - в динамических структурах. ну да бывает и с массивами - но и тогда не составляет труда прописать dispose

Цитата:
Увидите разницу - честь Вам и хвала, нет - ну ничего, это пройдёт со временем (надеюсь ;-)
Увидел - нового для себя ничего не открыл - в данной задаче, в целях излюбленной вами темы сохранения памяти память я выделяю строго на этапе исполнения программы для неопределенного колличества элементов, а не для заданного массив сразу - это по части только наверно вам так делать, раз делаете такие глупые замечания совсем необоснованные

В приниципе чтобы всякие тут не приставали могу написать вместо ^integer тип ^real - тогда надеюсь вы будете довольны ибо память в этом случае я достойно сберег специально для Вас, уважаемый Serge_Bliznykov, можете ей так сказать воспользоваться по достоинству

Да - я себя Богом не считаю, ибо еще только учусь на программиста, но за время пребывания я понял очень важную вещь - тех, кто знает код на форуме просто завались, душно даже от такого колличества знающих синтаксис языков, а вот программистов тут по пальцам посчитать, или их вообще нет - пока увидел только одного человека, который все оценивал с профессиональной точки зрения, не вызывая помощь язвы извне

А раз сделали такое замечание по поводу Бога - значит я Вас чем-то задел - ну уж простите, что в этом я разбираюсь немного лучше Вас
Пусть меня забанят на форуме, вынесут предупреждение - мне все равно, но я должен вам сказать что вы ДУРАК
capta1n вне форума Ответить с цитированием
Старый 17.01.2009, 22:22   #18
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Жаль, Екатерина, что я не смог Вам помочь еще не знаю Си следующий семестр обязательно на си буду шпилить
capta1n вне форума Ответить с цитированием
Старый 17.01.2009, 22:38   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

оставим Ваши "программисткие" таланты в стороне...
только по существу:
Цитата:
в данной задаче не требуется освобождать память, ибо мы выделяем ее строго для нужных элементов - лишних нету,
глупость. это приводит к утечками памяти. Всегда (подчёркиваю, всегда!), если Вы выделили память (или создали объект), нужно позаботиться о том, чтобы осовободить эту память (уничтожить объект).

Цитата:
целях излюбленной вами темы сохранения памяти память я выделяю строго на этапе исполнения программы
Для всех переменных, которые вы описали в VAR выделяется память СТАТИЧЕСКИ.
для примера попробуйте задать n и m по 10000 элементов. думаю, что до new() программа просто не дойдёт.. Т.е. Вы скачала выделяете память под огромный массив указателей. а потом это массив начинаете заполнять... это неверно. Так делать бессмысленно и глупо... :-(
учись лучше, пригодится...

p.s. переходить на личности и оскорбления... фи...
если в глубине остатки совести остались, то будет стыдно, а если нет - то не о чем и говорить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.01.2009, 22:40   #20
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Ну че сказать - ДУРАК - больше писать ничего не буду - учись сам, профессионал
--------------
И это называется так : "просто человек не прочитал условия задачи"
capta1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритмы работы с двумерными массивами cudalover Помощь студентам 10 18.01.2009 13:00
Работа с указателями Mango Помощь студентам 2 23.11.2008 10:33
использование процедур и функций для работы с массивами.....Паскаль.... КиношкА Помощь студентам 6 13.01.2008 14:23
проблема с указателями =\ shad0w Общие вопросы C/C++ 9 09.12.2007 03:36
Проблема с указателями novicer Общие вопросы Delphi 5 17.06.2007 00:21