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

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


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

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

Выпуск № 470
от 19.07.2006, 22:35

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


Вопрос № 49071: Доброго времени суток, у меня такая здача надо реализировать вот такую штуку : "Список : Стек, Очередь". на С++ помогите плиз, даже незнаю с чего начать. ...
Вопрос № 49084: Здравсвуйте, уважаемые эксперты! Итак, есть большое число типа int64. Нужно его как-то округлить до заданного числа знаков от начала. То есть, напрмиер есть: 163839134670 задано число знаков 3. Значит, надо получить 164. Без испо...
Вопрос № 49113: Нужна консольная программа, которая выдает квадрат состоящий из нулей и единиц. Ввод: сторона квадрата. По диагонали должны быть единицы, ниже нули а сверху единицы. Например для числа 4. 1111 0111 0011 0001 ...
Вопрос № 49149: Привет! Подскажите пожалуйста, как минимизировати диалог при эго создании. Дело в том что при запуске проги вместе с виндой, должена только быть создана иконка в трейе. Для того чтоб программа знала нужно ли показывать диалог использую ар...

Вопрос № 49.071
Доброго времени суток, у меня такая здача надо реализировать вот такую штуку :
"Список : Стек, Очередь". на С++ помогите плиз, даже незнаю с чего начать.
Отправлен: 13.07.2006, 23:31
Вопрос задал: Тарасяк, Назар, Богданович / nazarini (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sling
Здравствуйте, Тарасяк, Назар, Богданович / nazarini!
Тут многое зависит от того, с какой целью это надо реализовать и какие условия. Если заранее известно максимальное количество элементов в стеке/очереди то задача доволько простая и реализуется с помощью класса, содержащего массив заданной длины и осуществляющего добавление, извлечение элементов и проверки на выход за границы массива. (см. приложение)
Если же максимальное количество элементов не задано, тут нужно использовать указатели и задача несколько усложняется, хотя и не намного.
Также стек элементарно реализуется с помощью класса vector. Не знаю точно, с какой версии с++ он появился но в Visual C++ 6.0 он точно есть.

Приложение:

---------
The fear of blood tends to create fear for the flesh

Ответ отправил: Sling (статус: 1-ый класс)
Ответ отправлен: 14.07.2006, 02:32
Оценка за ответ: 5

Отвечает: SergeyMAC
Здравствуйте, Тарасяк, Назар, Богданович / nazarini!
Если мне не изменяет память, то все это с примерами было подробненько разобрано у Е. Романова, посмотрите на эту ссылку http://docs.h1.ru/ci.html , здесь можно скачать романовскую книжку.
Удачи...
---------
броня крепка, и танки наши быстры
Ответ отправил: SergeyMAC (статус: 6-ой класс)
Ответ отправлен: 14.07.2006, 08:15
Оценка за ответ: 4


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

Итак, есть большое число типа int64. Нужно его как-то округлить до заданного числа знаков от начала.
То есть, напрмиер есть:
163839134670
задано число знаков 3. Значит, надо получить 164. Без использования библиотечных функций Си и естественно без плясок с float'ом.
(К сожалению ассемблера не знаю, возможно там решение этой задачи было бы более красивым.)
Что порекомендуете?
Отправлен: 14.07.2006, 04:06
Вопрос задал: Белкин Алексей (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

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

Смотрите пример в приложении. Проверить нет времени, так что возможны опечатки. Но, думаю, идея понятна. В принципе, алгоритм можно чуть ускорить, будет нужно - пишите.

Приложение:

Ответ отправил: Physicist (статус: 5-ый класс)
Ответ отправлен: 14.07.2006, 07:50
Оценка за ответ: 5
Комментарий оценки:
да, понятно. просто думал, вдруг можно как-то через внутреннее представление числа. спасибо.

Отвечает: Sling
Здравствуйте, Белкин Алексей!
Проблема решается довольно просто - код в приложении

Приложение:

---------
The fear of blood tends to create fear for the flesh

Ответ отправил: Sling (статус: 1-ый класс)
Ответ отправлен: 14.07.2006, 09:00
Оценка за ответ: 5
Комментарий оценки:
все ясно. спасибо.


Вопрос № 49.113
Нужна консольная программа, которая выдает квадрат состоящий из нулей и единиц.
Ввод: сторона квадрата.
По диагонали должны быть единицы, ниже нули а сверху единицы.
Например для числа 4.
1111
0111
0011
0001

Приложение:

Отправлен: 14.07.2006, 12:37
Вопрос задал: АВС (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: gitter
Здравствуйте, АВС!
Попробуйте следующим образом:
void main()
{
Print(": ");
int n;
std::cin >> n;

int * sqr = new int[n * n];

for(int i = 0; i < n; i++)
{
for (int j = 0; j < i; j++)
{
std::cout << 0;
}
for (int j = i; j < n; j++)
{
std::cout << 1;
}
std::cout << std::endl;
}
}

Здесь даже массив sqr не пригодился.

Удачи!
Ответ отправил: gitter (статус: Студент)
Ответ отправлен: 14.07.2006, 12:45

Отвечает: Physicist
Здравствуйте, АВС!

Всё "почти" правильно, нужно только поменять местами 0 и 1, добавить вывод каждого элемента матрицы и правильно обращаться к элементам матрицы. См. приложение.

Приложение:

Ответ отправил: Physicist (статус: 5-ый класс)
Ответ отправлен: 14.07.2006, 12:55

Отвечает: Sling
Здравствуйте, АВС!
Если я правильно понял, то прога элементарная. (см. приложение)
Пишу так, как это выглядело бы в консоли для Visual C++ 6.0

Приложение:

---------
The fear of blood tends to create fear for the flesh

Ответ отправил: Sling (статус: 1-ый класс)
Ответ отправлен: 14.07.2006, 13:25

Отвечает: SergeyMAC
Здравствуйте, АВС!
Не совсем понял что там у вас в приложении (не дочитал), но может это вам поможет
См. приложение

Удачи....

Приложение:

---------
броня крепка, и танки наши быстры

Ответ отправил: SergeyMAC (статус: 6-ой класс)
Ответ отправлен: 14.07.2006, 13:41


Вопрос № 49.149
Привет!
Подскажите пожалуйста, как минимизировати диалог при эго создании.
Дело в том что при запуске проги вместе с виндой, должена только быть создана
иконка в трейе. Для того чтоб программа знала нужно ли показывать диалог использую аргумент командной строки. Делаю следующее. В класе приложения(CWinApp) проверяю встановлен ли параметр ком. строки, тогда в класе диалога присваиваю значение переменной start_minimized. В OnInitDialog() делаю следующее:
if(start_minimized) {
ShowWindow(SW_HIDE);
AddTrayIcoN();
}
Но почему-то диалог все-таки отображаеться. В чем дело?
ЗЫ: А вот ShowWindow(SW_SHOWMINIMIZED); работает...
Отправлен: 14.07.2006, 20:22
Вопрос задал: X3m (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Решетник Д
Здравствуйте, X3m!
Для реализации ьакой функции нужно не напрямую скрывать окно.
При старте программы нужно МИНИМИЗИРОВАТЬ программу, а в обработчике минимизации скрывать и добавлять трэй-иконку.
if(start_minimized) {
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
}
Соответственно в каком-нить
OnMinimize()
{
AddTrayIcoN();
}

---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 10-ый класс)
Ответ отправлен: 14.07.2006, 20:32

Отвечает: Physicist
Здравствуйте, X3m!

Нашел в MSDN про параметр функции ShowWindow:

This parameter is ignored the first time an application calls ShowWindow, if the program that launched the application provides a STARTUPINFO structure.

Не знаю, относится это к Вашему случаю или нет, но попробуйте вызвать ShowWindow дважды (чтобы было наверняка, можно сделать первый вызов с SW_SHOWMINIMIZED, а второй с SW_HIDE). Надеюсь, поможет...
Ответ отправил: Physicist (статус: 5-ый класс)
Ответ отправлен: 14.07.2006, 20:37


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное