Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 618
от 22.12.2006, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 432, Экспертов: 44
В номере:Вопросов: 4, Ответов: 5


Вопрос № 67230: Здравствуйте уважаемые эксперты. У меня проблема. При компиляции этой проги мне выдаёт 13 ошибок. Не могу понять их смысл. надеюсь на вышу помощь. Суть проги: одномерный массив из N элементов(N <= 16), где меняются местами первый и второй...
Вопрос № 67232: Здравствуйте уважаемые эксперты! как правильно создать функции в различных модулях. Или скиньте ссылку, де об этом можно что-либо прочитать. Заранее благодарна!=)...
Вопрос № 67326: Доброе время суток! Проблема с извлечением данных из структуры, которая передается в LPARAM. Код в приложении....
Вопрос № 67332: Здравствуйте! Подскажите пожалуйста...уже какой день ищу ошибку. Ниже приведен код программы в C++Builder 6. По заданию мне надо задать многоугольник и с помощью кнопок производить над ним некоторые действия (перемещения вправо, влево и т.д., вр...

Вопрос № 67.230
Здравствуйте уважаемые эксперты. У меня проблема. При компиляции этой проги мне выдаёт 13 ошибок. Не могу понять их смысл. надеюсь на вышу помощь.

Суть проги: одномерный массив из N элементов(N <= 16), где меняются местами первый и второй элементы, третий и четвёртый и т.д.

В прогу вставила коменты, для лучшего понимания.
Заранее благодарна за помощь!

Приложение:

Отправлен: 16.12.2006, 13:08
Вопрос задал: Spenser (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Bob Johnson
Здравствуйте, Spenser!
прежде всего, в 4-й строке надо писать
#define Max 16
без знака равно.
затем, в 65-й строке нужно в конце добавить ;
printf("Posle preobrazovanija: ");
Ответ отправил: Bob Johnson (статус: Академик)
Россия, Калуга
WWW: Программирование
----
Ответ отправлен: 16.12.2006, 13:39
Оценка за ответ: 5


Вопрос № 67.232
Здравствуйте уважаемые эксперты!

как правильно создать функции в различных модулях. Или скиньте ссылку, де об этом можно что-либо прочитать.

Заранее благодарна!=)
Отправлен: 16.12.2006, 13:11
Вопрос задал: Spenser (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Алексеев В.В.
Здравствуйте, Spenser!
Если вы имеете ввиду объявление функции в одном файле, а ее вызов в другом то делайте следующим образом:
Напишите саму функцию в одном из файлов, включите его в список компиляции(добавьте файл в проект в Visual Studio или добавьте его в makefile для консольных компиляторов).
Для вызова этой функции в другом файле можно:
а)Написать прототип этой функции в файле, где она вызывается
б)Написать прототип в файле с расширением .h и включить его в файл директивой #include

Приложение:

Ответ отправил: Алексеев В.В. (статус: 2-ой класс)
Ответ отправлен: 16.12.2006, 18:01
Оценка за ответ: 5


Вопрос № 67.326
Доброе время суток!
Проблема с извлечением данных из структуры, которая передается в LPARAM. Код в приложении.

Приложение:

Отправлен: 17.12.2006, 03:04
Вопрос задал: Белкин Алексей (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Torsten
Здравствуйте, Белкин Алексей!
Ты создаешь MY_STRUCT локально для одной функции, поэтому при выходе из нее она удаляется. И соотвественно адрес указателя который ты присвоил LPARAM еще какой-то есть, но память там уже особождена и в ней либо находится уже другие данные, либо мусор.

Выделяй для своей структуры память динамически, чтобы она осталась после выхода из функции и естественно не забывай удалять где-нибудь в другом месте (в данном случае, удобно это сделать во 2-ой функции).

Приложение:

---------
#define MAGIC_NUMBER 0xdeface

Ответ отправил: Torsten (статус: 3-ий класс)
Ответ отправлен: 17.12.2006, 11:55
Оценка за ответ: 5

Отвечает: John Paramol
Здравствуйте, Белкин Алексей!

Достаточно создать структуру mmm статической (со спецификатором static).

PS. Если все же не в этом ошибка, есть у меня другое подозрение, пишите в мини-форум
---------
1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 5-ый класс)
Ответ отправлен: 17.12.2006, 16:32
Оценка за ответ: 5
Комментарий оценки:
спасибо за ответы!


Вопрос № 67.332
Здравствуйте! Подскажите пожалуйста...уже какой день ищу ошибку. Ниже приведен код программы в C++Builder 6.
По заданию мне надо задать многоугольник и с помощью кнопок производить над ним некоторые действия (перемещения вправо, влево и т.д., вращение по часовой и против а также сжатие и растяжение)
В программе заполняю массив TPoint точек а потом с помощью Polygon отображаю его.
Есть следующие кнопки.
Button1 рисует в скрол баре поля для ввода х и у координат вершин.
Button2 заполняет массив TPoint координатами вершин.
ToolButton7 поворачивает фигуру.
ToolButton2 движет её вправо.

Все едействия должны быть НЕ взаимосвязаны, т.е. если я повращал фигуру, то при нажатии на кнопк "вправо" она должна сдвинутся с места не от места куда я её повернул а из изначального положения, это же для перемещения. Должно потом вращатся из изначального положения.
Проблема в том что у меня вращения получается взаимосвязанным от перемещения, т.е. если я немного подвигал и начинаю вращать он вращает не из начального места а из передвинутого.
Посмотри пожалуйста код.

Заранее большое спасибо!!!

Приложение:

Отправлен: 17.12.2006, 08:25
Вопрос задал: Минус (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tek
Здравствуйте, Минус!
Вы же не предусматриваете сохранения исходного положения. Точнее движение то работает с копией массива. А вот в процедуре сдвига вы изначально хоть присваиваете внутреннему указателю значение указателя основного массива вершин (хотя это верх наглости - сначала выделить НОВУЮ память под массив из n структур типа POINT, а потом единственный указатель на эту память затереть другим значением - утечка гарантирована, да еще и при каждом вызове процедуры движения), однако затем вы по этому укзателю и работаете, то есть вы изменяете значения координат изначальных вершин.
Могу предложить тщательно почистить код - ооочень много лишнего и использовать следующую схему работы:
в каждой процедуре изменения многоугольника копировать САМ массив а НЕ его указатель в локальный, работать с ним можно и как сейчас в принципе и потом обязательно удалять после использования. Во всяком случае если вы не под .NET работаете - это там сборщик мусора есть :) и то я лично пока его в работе тщательно не опробовал, по-этому не буду советовать ему доверять.

---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 3-ий класс)
Ответ отправлен: 18.12.2006, 09:53


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное