SkyRiver Forum
http://skyriver.ru/forum/

Программирование. С++. Обмен опытом.
http://skyriver.ru/forum/viewtopic.php?f=3&t=3316
Страница 1 из 9

Автор:  Shaman [ Вс 16 мар 2008 1:05 ]
Заголовок сообщения:  Программирование. С++. Обмен опытом.

Может, ув. администрация и скажет, что сей форум не аккультное место программизма, но я всё же попрошу не гневаться и дать этой весьма полезной теме существовать, поскольку среди нас, я уверен, найдётся много людей, кому этот топик будет полезен, а также тех, кто не пожмотился бы поделиться своим опытом. :yes:

Итак, я предлагаю устроить в этом топике что-то вроде "F.A.Q." по программированию на языке С++.
Только такое сразу предупреждение: за подкалывание над новичками, задающими наивные вопросы - сразу плюху или даже РО, ибо нечего смеяться над людьми только потому, что они не знают того, что знаешь ты, даже если тебе и удалось когда-то освоить всё быстро и самому. :evil:

Добавлено спустя 1 минуту 33 секунды:

========================================================

NoVuS писал(а):
Я сейчас попробовал на С++ кнопку создать, но непомню как там задавать команды и какие они там есть.


Перечислю и объясню те настройки кнопки, которые я знаю и юзаю:

1) "Anchors" ("Якоря"): для фиксации положения кнопки на форме. Там можно выбрать четыре "якоря", которые будут зацеплены за выбранные края формы. Т.е. если изменять размеры формы, то размеры и положение кнопки тоже будет меняться. Выбирать тот или иной якорь можно, выставив ему значение "true". К примеру, если сделать "akRight true", то правый (Right) край кнопки будет привязан к правому краю формы, т.е. это расстояние будет неизменным при изменении размеров формы. Допустим, если выбраны и "akLeft", и "akRight", то кнопка будет держаться за оба края формы, так что при растяжении формы, кнопка также будет растягиваться.
2) "Caption" - текст, который будет отображаться на кнопке.
3) "Cursor" - тут можно выбрать, какой вид курсора будет при наведении на данную кнопку.
4) "Enabled" ("Доступна") - очень важная опция. Если значение true, значит, кнопка доступна, т.е. её можно тыкать. Если же значение false, то кнопка будет серая и не будет работать.
5) "Font" ("Шрифт") - настройки шрифта (такие как: размер, название шрифта, стиль и т.д.), которым будет напечатана надпись на кнопке. Если тыкнуть на поле значений, там появится кнопка "...". Если тыкнуть её - вылезет окошко со всеми настройками шрифта.
6) "Height" ("Высота") - высота кнопки в пикселях.
7) "Hint" ("Подсказка") - то, что будет вылазить через некоторое время, если курсор юзера будет тупо торчать на кнопке. Можно ввести сюда коротенький текст, если хочется помочь юзеру втыкнуть, что к чему. :smile: Такое примечание: недостаточно просто написать текст подсказки - надо ещё и включить опцию отображения её, иначе написанная подсказка не вылезет. Но об этом ниже.
8) "Left" - сколько пикселей будет от левого края формы до кнопки. Под координатами любого объекта на форме считаются координаты левого верхнего угла этого объекта.
9) "Name" ("Имя") - уникальное название объекта. Если в "Caption" вводится то, что будет просто отображено на кнопке, то тут нужно ввести имя кнопки, т.е. как бы её "идентификатор". Тут уже строго: только английские буквы принимаются!
10) "ShowHint" ("Показывать подсказку") - если нужно, чтобы подсказка вылазила при наведении курсора на кнопку, нужно включить эту опцию (т.е. в поле значения выбрать "true"). Но если текст подсказки не введён, вылазить будет пустая рамка без текста. Так что без толку не нужно врубать, а только если в графе "Hint" (выше описано) имеется сам текст подсказки. :yes:
11) "Top" - сколько пикселей будет от верхнего края формы до кнопки. Т.е. также, как и опция "Left", определяет положение кнопки на форме.
12) "Visible" ("Видимая") - если отключить эту опцию, то кнопка не будет вообще отображаться на форме. Т.е. при программировании, конечно, она видна будет, но вот после ритуала Священной Компилляции, когда программа запустится, кнопка исчезнет. :tongue:
13) "Width" ("Ширина") - ширина кнопки в пикселях. Также, как и "Height", определяет размер кнопки, только тут - по горизонтали.


Ну, я не все опции описал, конечно, а лишь те, что пока активно юзал сам и предназначение которых хорошо понимаю. Во всяком случае, этого набора мне вполне хватает. В принципе, если поставить курсор на поле значений любой опции и нажать кнопку F1 (функциональная кнопка подсказок), то будет показан полный мануал по этой опции. :tongue: Только нужно учитывать, что большинство опций универсальны (к примеру "Width", "Height", и др.), т.е. одинаково используются не только для кнопок, но и для, к примеру, надписей ("Label") и др. объектов. Так что при нажатии F1 сначала будет выдан список, где нужно при возможности конкретизировать, мануал этой опции для какого объекта нужно показать (в нашем случае - для "TButton", хотя для большинства универсальных опций нет конкретики, для какого именно объекта, и там может быть что-то отвлечённо-общее). Кстати, такой ещё нюанс: там могут быть два на первый взгляд одинаковых названия мануалов, отличающиеся лишь припиской в скобочках. Выбирать нужно ту, что "VCL" (Visual Component Library), либо, если таковой нет, то ту, где приписки в скобках нет. Не думаю, что для начинающих особо важно, что это значит. :roll:
Так что если с английским всё нормально, либо не лень в словаре покопаться, то можно пользоваться мануалом. :yes:


========================================================

Добавлено спустя 5 часов 28 минут 41 секунду:

Такой вопрос: почему числа типа float "глючат" и как с этим бороться? :sad: Я тут калькулятор изобретаю нормальный, так что тяжело приходится: вводишь число с парой десятичных знаков, а отображается ещё куча неизвестно откуда взявшихся! :evil: Как с этим бороться - есть ли способ какой-нить? :sad:
З.Ы.: это распространённое явление, или только у меня такая байда с float'ами? :hm:

Автор:  Razum [ Вс 16 мар 2008 1:12 ]
Заголовок сообщения: 

С этим нельзя бороться. Ты можешь использовать тип Double, чтоб повысить точность, но он в целом имеет тот же недостаток.
Числа извращаются по той причине, что они переводятся в машинное двоичное представление, и десятичная конечная дробь, переведенная в двоичную, может оказаться бесконечной периодической. Из-за этого и появляются "левые" знаки после запятой. Механизм этот где-то на просторах инета описан, если хочешь, можешь сам найти.

Добавлено спустя 2 минуты 11 секунд:

Если ты хочешь заделать неизвращающиеся числа с любым количеством знаком после запятой, тебе придется создавать новый тип данных, и самому реализовывать работу с ним.

Автор:  Shaman [ Вс 16 мар 2008 1:23 ]
Заголовок сообщения: 

Razum писал(а):
Если ты хочешь заделать неизвращающиеся числа с любым количеством знаком после запятой, тебе придется создавать новый тип данных, и самому реализовывать работу с ним.
long int обворотить опухолями? :roll: Вот отстой, но что делать, раз так... :oops:

Добавлено спустя 1 минуту 8 секунд:

Кстати, а как в Виндусовском калькуляторе, ты не слышал случаем? :hm:

Автор:  Razum [ Вс 16 мар 2008 1:28 ]
Заголовок сообщения: 

Шаман писал(а):
Кстати, а как в Виндусовском калькуляторе, ты не слышал случаем?

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

Автор:  Shaman [ Вс 16 мар 2008 1:30 ]
Заголовок сообщения: 

Razum писал(а):
Самый примитивный способ - отвести один байт под каждую цифру числа, и заделать список из таких байтов.
А как при мат-операциях? Разве эта мега-байда не конвертаеццо при этом в обычный двоичный формат? :hm:

Автор:  Razum [ Вс 16 мар 2008 1:32 ]
Заголовок сообщения: 

Шаман писал(а):
А как при мат-операциях? Разве эта мега-байда не конвертаеццо при этом в обычный двоичный формат?

Ты не просек, походу. Ты сам сделаешь свой тип, и какие операции ты для него определишь, такие и будут.
А цифры, конечно, хранятся в двоичном виде, они по-другому не могут, но они хранятся как целые, и поэтому их не коцает.

Автор:  Shaman [ Вс 16 мар 2008 1:37 ]
Заголовок сообщения: 

2 Razum: лана, буду чё-нить мудрить. :roll:

Автор:  Razum [ Вс 16 мар 2008 1:40 ]
Заголовок сообщения: 

2 Шаман
А зачем тебе изобретать велосипед? По-моему, виндового калькулятора хватит на все случаи жизни.

Автор:  Shaman [ Вс 16 мар 2008 12:39 ]
Заголовок сообщения: 

Razum писал(а):
А зачем тебе изобретать велосипед? По-моему, виндового калькулятора хватит на все случаи жизни.
Если сравнивать его с моим обычным, физическим, то Виндусовский просто бесполезен. :smile:

Автор:  Alisher [ Вс 16 мар 2008 15:39 ]
Заголовок сообщения: 

Шаман писал(а):
то Виндусовский просто бесполезен.
Переключи его в инженерный режим, и можешь не изобретать калькулятор заново. :smile: Если пишешь самостоятельно программы - то либо для себя, и тогда они не нужны 95% пользователей, или для других - тогда они должны быть нужны этим 95%.
У нас в институте преподавали Турбо-Си, а Си++ только чуть-чуть захватил, и за давностью лет (около 15 лет назад) уже почти не помню. :smile: Помню делал программу, рисующую на экране петлю Фиббоначи, в рекурсии, под DOS-ом естественно.

Автор:  Shaman [ Вс 16 мар 2008 15:42 ]
Заголовок сообщения: 

Alisher писал(а):
Переключи его в инженерный режим, и можешь не изобретать калькулятор заново.
В таком режиме даже корня нет! :lol:

Автор:  Razum [ Вс 16 мар 2008 15:47 ]
Заголовок сообщения: 

Ну не знаю, чем те виндовый калькуль плох. Он только не программируемый, а все остальное у него очень даже на уровне. И корень там есть, причем любой степени.

Автор:  Alisher [ Вс 16 мар 2008 15:56 ]
Заголовок сообщения: 

Шаман писал(а):
В таком режиме даже корня нет!

скромный офтоп на тему калькулятора. Специально для программистов на С++. :smile:
Нажимаешь "8", ставишь галочку "Inv", жмешь кнопку "x^y", "3", "=". Получаешь 2. Корень 3-й степени из 8.
Можно кончно иногда и напрямую "x^y" использовать - возводить в степень 1/y, но так наглядней.

Автор:  Shaman [ Вс 16 мар 2008 21:59 ]
Заголовок сообщения: 

Лана, всё, забыли. :oops: Вопрос был о глюках флоатов, вообще-то... :roll:

Добавлено спустя 5 часов 3 секунды:

Кое-что интересное заметил: в библиотеке Math функции ArcSin и ArcCos перепутаны, т.е. ArcSin возвращает в действительности арккосинус, а функция ArcCos - арксинус. :tongue: Вотъ. :mrgreen:

Автор:  Shaman [ Чт 20 мар 2008 18:18 ]
Заголовок сообщения: 

Такся, почти сотворил свой божественный калькуль. :mrgreen: Последняя запара осталась... :oops:
Мне хочется сделать так, чтобы при нажатии спец-кнопочки содержимое дисплея калькулятора (оно в текстовом формате) копировалось в буфер обмена, чтобы можно было потом вставить это дело в, к примеру, текстовый документ или ещё куда-нить - куда юзер пожелает. Так такой вопрос: как, при помощи какой функции я могу осуществить копирование текста в стандартный Виндусовский буфер обмена? :hm: Подскажите кто-нить, пожалуйста. :god:

Автор:  Shaman [ Пт 21 мар 2008 21:41 ]
Заголовок сообщения: 

Поскольку помочь со способом копирования текста в буфер обмена мне никто не счёл нужным ( :evil: ), представляю Вам мой вариант калькулятора, в котором кнопки "Copy" и "Paste" работать не будут. :tongue: В остальном - прошу заценить:
Удобный калькулятор (333 kB).
Может, кто-нить всё-таки поможет с реализацией копирования текста в буфер обмена? :sad:

Добавлено спустя 2 минуты 4 секунды:

З.Ы.: чтобы скачать с этого хостинга, просто подождите 30 сек.

Автор:  Alisher [ Пт 21 мар 2008 22:18 ]
Заголовок сообщения: 

2 Шаман Это не по нашей злобе или безразличию, а токмо по нашему незнанию :oops:

Автор:  Vivicector [ Пт 21 мар 2008 23:05 ]
Заголовок сообщения: 

2 Шаман
Пожалуйста, выкладывай файлы на www.filefront.com От туда гораздо приятней грузить и ждать не надо :wink:

Автор:  Shaman [ Сб 22 мар 2008 10:32 ]
Заголовок сообщения: 

Alisher писал(а):
Это не по нашей злобе или безразличию, а токмо по нашему незнанию
А, ну звиняйте... :oops:
Vivicector писал(а):
Пожалуйста, выкладывай файлы на www.filefront.com
Вот на этот сайт - никогда в жизни!!! :evil: Мой антивирус "булькает" без перерыва - на это заражённое до основания "Г" я никогда не полезу!
Может, какой-нить ХОРОШИЙ хостинг подскажете? :roll:

З.Ы.: а где я могу задавать программистские вопросы? Можете какой-нить форум соответствующий подсказать? :hm:

Автор:  Славон [ Сб 22 мар 2008 14:24 ]
Заголовок сообщения: 

Выкинь свой антивирус.

Автор:  Серж [ Сб 22 мар 2008 15:39 ]
Заголовок сообщения: 

[/quote]Может, какой-нить ХОРОШИЙ хостинг подскажете? :roll:

З.Ы.: а где я могу задавать программистские вопросы? Можете какой-нить форум соответствующий подсказать?[/quote]

1. www.mediafire.com (до 100 м/файл); www.yandex.ru (до 500 м/файл); www.zshare.com
2. www.forum.ru-board.com

Автор:  Krogoth [ Сб 22 мар 2008 16:46 ]
Заголовок сообщения: 

2 Шаман
Это самый лучший хостинг. Никаких вирусов на нем нет.
Калькулятор, имхо, недостаточно эргономичен. Расположение кнопок, как и у стандартного калькулятора Windows, неудобное. Не реализована возможность выполнения нескольких действий, ну или, хотя бы, вывод результата при нажатии подряд следующего действия. В общем, можно много еще чего доработать. :roll:

Автор:  Shaman [ Сб 22 мар 2008 16:55 ]
Заголовок сообщения: 

Krogoth писал(а):
Не реализована возможность выполнения нескольких действий, ну или, хотя бы, вывод результата при нажатии подряд следующего действия.
Не понял, что ты имел в виду. :hm: Разжуй, пожалуйста. :yes:

Добавлено спустя 2 минуты 12 секунд:

2 Серж: большое спасибо за наводку. :yes:

Автор:  Krogoth [ Сб 22 мар 2008 17:07 ]
Заголовок сообщения: 

Шаман писал(а):
Не понял, что ты имел в виду. Разжуй, пожалуйста.
Нажал кнопку "2". Повторил операцию. Результат не суммируется, действия игнорируются до нажатия "=".
После осуществления действия при вводе цифр они добавляются к уже полученному числу, в чем необходимости, имхо, нет. Должно вводится число для следующей операции.

Автор:  Shaman [ Сб 22 мар 2008 19:30 ]
Заголовок сообщения: 

2 Krogoth: а, кажысь внял. Спасибо за заметку, будет исправлено. :yes:
Я ж как раз и вывесил свой калькуль для тестанья. Это не последний релиз. Помогите ловить баги, кому не в лом, пожалуйста. :god:

Добавлено спустя 1 час 54 минуты 48 секунд:

Поправил проблему, описанную Крогтем. :oops: Чуть-чуть кнопочки переставил местами. Вот что получилось:
Калькулятор (331 kB)
З.Ы.: зафигачил уже на Ваш чертов файлфронт, хотя лично мне просто омерзительно, когда на каждое действие откликается куча бульканий антивируса. :evil: Не говорите, что мой антивирус - параноик. :wink: Мои антивирусы - американские (Pest Patrol, eTrust), а www.filefront.com - тоже американский сайт. Так что мои антивирусы просто в своей тарелке, и видят то, про что Ваши не слышали. :tongue: Кстати, ради эксперимента: что Ваши антивирусы думают про подобный файлфронту хостинг www.imageshack.us ? Мои антивирусы плюются, как на файлфронт (тут уж точно заслуженно :evil: )... :roll:

Автор:  Krogoth [ Сб 22 мар 2008 19:38 ]
Заголовок сообщения: 

Еще недочет: мы ввели число, прибавили к нему число и нажимаем на умножение. Потом еще раз. А потом еще раз. Возводит в квадрат! :shock:
Или вот еще: вводим число, умножаем его на другое число и нажимаем на сумму. Потом еще раз. И еще. Умножает на 2. :hm:

Автор:  Shaman [ Сб 22 мар 2008 21:37 ]
Заголовок сообщения: 

2 Krogoth: большое спасибо, ты - классный тестер! :yes: Теперь всё подправил, так что умножение, деление, сложение и вычитание работают как в нормальном калькуле:
Калькулятор (333 кБ)
Прошу тестать дальше. :yes:
Krogoth писал(а):
Калькулятор, имхо, недостаточно эргономичен.
Не мог бы ты дать какие-нить пожелания относительно улучшения эгро... эрго... ну как там... :oops: ? :hm: Может, нужно ещё уразноцветить какие-нить кнопочки или сгруппировать их, разделив линиями? Жду пожеланий. :yes:

Автор:  Серж [ Сб 22 мар 2008 22:26 ]
Заголовок сообщения: 

Замумукали темой куркулятора - вот, кому треба (и с логарифмами и с интегралами ;-))) [p/w Серж]
http://www.mediafire.com/?dezof1vx1m3

Автор:  Shaman [ Вс 23 мар 2008 1:23 ]
Заголовок сообщения: 

2 Серж: блин, я, модемщик, полтора часа качал эти безумные почти-2-метра - а там пароль на архиве!!! :evil: Потрудись объяснить! :hm:

Автор:  Серж [ Вс 23 мар 2008 1:32 ]
Заголовок сообщения: 

Потрудися:
1. 2 мб. и на моПеДе не проблема... (типа хорош гнать, знаем, плавали...!!!)
2. А мой пост по-внимательнее позырить? = [p/w Серж] !!!
(как видиЦЦа, в русской раскладке!) :twisted:
3. Так, типа совет... пользуй ДаунлоадМастер (он бесплатный, качацца будет в 5-15 раз /в твоем случае/ быстрее... Плюс они /и Даун и Медиафайр/ поддерживают докачку, если вдруг "Масяня" случится ;-))))))
http://www.westbyte.com/dm/index.phtml? ... ng=Russian

ЗЫ:<Что бы такое нашаманить сегодня?.. >
Нашамань выделенку :smile:

Страница 1 из 9 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/