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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 983
от 01.02.2008, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 479, Экспертов: 59
В номере:Вопросов: 8, Ответов: 15

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 120245: Здравствуйте, уважаемые эксперты! В модальном диалоговом окне (DoModal) есть элемент управления CEdit В обычном случае, если пользователь поставил курсор в CEdit ввел цифры и нажал на Enter, то диалог закроется. Мне очень нужно, чтобы по ...
Вопрос № 120262: Сформировать матрицу B(M,N) элементами которой являются случайные числа, равномерно распре¬деленные в интервале (-5,7). Переставляя её строки и столбцы, добиться того, чтобы наибольший элемент матрицы оказался в правом нижнем углу. ...
Вопрос № 120278: Здравствуйте уважаемые эксперты! Помогите пожалуйста решить задачу. Необходимо вывесть на экран все уникальные элементы одномерного массива например a[7]={1,2,1,3,4,4,1}; Зараннее благодарен....
Вопрос № 120324: Здравствуйте! помогите написать программу, которая выводит содержимое массива наоборот. ...
Вопрос № 120325: Здравствуйте! сможет ли кто -нибудь мне объяснить как задавать условие к программе. на что в первую очередь надо ориентироваться. не могу сдвинуться с места никак. вроде бы все понимаю, а как дело доходит к программам. то что-то никак.<br...
Вопрос № 120336: Добрый вечер уважаемые специалисты. Очень сильно нужна ваша помощь в решении программ. По идее вроде бы все понятно но в тоже же время сделать не получается. Всем кто поможет высокие оценки гарантирую ;) 1. Пользователь с клавиатуры вводит строк...
Вопрос № 120338: Здраствуйте уважаемые эксперты. Прошу помочь с праграммой на языке С. Я ее в приложении написал для удобного чтения! ..
Вопрос № 120343: Здравствуйте. Помогите изменить программу в приложении таким образом, чтобы в paint'е окна по нажатию кнопки ("press me") рисовалась линия. Координаты линии неважно какие, главное чтоб было видно....

Вопрос № 120.245
Здравствуйте, уважаемые эксперты!
В модальном диалоговом окне (DoModal) есть элемент управления CEdit
В обычном случае, если пользователь поставил курсор в CEdit ввел цифры и нажал на Enter, то диалог закроется.
Мне очень нужно, чтобы по Enter диалог не закрывался, а, например, диалог что-то делал, и ставил фокус ввода на следующий элемент управления. После этого если нажать на Enter, то можно закрыть диалог.
Как такое можно сделать?
Если возможно, приведите, пожалуйста, какие-нибудь примеры реализации.
Если есть подобные примеры, очень прошу ссылку.
Спасибо за внимание, пока.
Отправлен: 26.01.2008, 12:39
Вопрос задал: Александр Лагий (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

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

Добавьте в класс диалога (наследника CDialog) метод OnOK().
virtual void OnOK();
Этот метод вызывается при нажатии на кнопку Ok, или на клавишу Enter. В нем вы можите выполнять любые действия, а для закрытия диалога вызовите CDialog::OnOK().

ps: При нажатии на кнопку Cancel (Отмена) или клавишу Esc вызывается метод OnCancel().
---------
нет ничего невозможного
Ответ отправил: Aristos (статус: 9-ый класс)
Ответ отправлен: 26.01.2008, 12:55

Отвечает: Сандров Алекс
Здравствуйте, Александр Лагий!

Нужно сделать обработчик для диалога
CMyDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
if(wParam == IDOK) // это ентер
{
// смотрим, где фокус и делаем нужные приседания
}
//....
}
Ответ отправил: Сандров Алекс (статус: 2-ой класс)
Ответ отправлен: 28.01.2008, 06:12


Вопрос № 120.262
Сформировать матрицу B(M,N) элементами которой являются случайные числа, равномерно распре¬деленные в интервале (-5,7). Переставляя её строки и столбцы, добиться того, чтобы наибольший элемент матрицы оказался в правом нижнем углу.
Отправлен: 26.01.2008, 14:15
Вопрос задал: LAN1988 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, LAN1988!
Вариант решения вашей задачи смотрите в приложении.

Приложение:

Ответ отправил: Терсков Сергей (статус: Практикант)
Ответ отправлен: 28.01.2008, 04:04
Оценка за ответ: 5


Вопрос № 120.278
Здравствуйте уважаемые эксперты!
Помогите пожалуйста решить задачу. Необходимо вывесть на экран все
уникальные элементы одномерного массива например a[7]={1,2,1,3,4,4,1}; Зараннее благодарен.
Отправлен: 26.01.2008, 16:52
Вопрос задал: Мокренко Игорь (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Мокренко Игорь !
Вот, пожалуста.
Написана в среде MS Visual C++ 2005.

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 26.01.2008, 17:31
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо X-men! Все замечательно работает.


Вопрос № 120.324
Здравствуйте!
помогите написать программу, которая выводит содержимое массива наоборот.
Отправлен: 26.01.2008, 21:56
Вопрос задала: Рак Оксана (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Рак Оксана !
В этой программе нет ничего сложного.
В приложении - программа на MS Visual C++.

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 26.01.2008, 22:06
Оценка за ответ: 5

Отвечает: Касаткин Сергей Сергеевич
Здравствуйте, Рак Оксана !
В пирложении содержится интерисующий вас код. Хочу заметить, что я использовал стандартные функции STL.

Приложение:

---------
WIT BEYOND MEASURE IS MAN’S GREATEST TREASURE.

Ответ отправил: Касаткин Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 26.01.2008, 22:48

Отвечает: Dr_Andrew
Здравствуйте, Рак Оксана !
В приложении - ещё одно решение с использованием STL. Без algorithm, но зато с использованием векторов.

Приложение:

Ответ отправил: Dr_Andrew (статус: 5-ый класс)
Ответ отправлен: 27.01.2008, 07:14


Вопрос № 120.325
Здравствуйте!
сможет ли кто -нибудь мне объяснить как задавать условие к программе.
на что в первую очередь надо ориентироваться.
не могу сдвинуться с места никак. вроде бы все понимаю, а как дело доходит к программам. то что-то никак.
Видно ли с рисунка сразу как задать условие. Хотя бы даже в том же треугольнике или ромбе?
Отправлен: 26.01.2008, 21:59
Вопрос задала: Рак Оксана (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: X-men
Здравствуйте, Рак Оксана !
Давайте я вам попробую объяснить. Смотрите, всё просто: в программировании есть такая конструкция
if (условие) { оператор_1; оператор_2; ...; оператор_n; }
else { оператор_1; оператор_2; ...; оператор_n; }
Когда программа доходит до этой строчки, то сначала проверяется условие. Оно проверяется на истину, т.е. если условие "правильное" (например 1 < 5), то выполняется код, заключенный в фигурные скобки (который стоит сразу после условия). Если условие "неправильное" (например 1 > 5), то выполняется код в блоке else (код_2). Блок else необязателен.

В блок-схемах этот оператор обозначается с помощью ромбика, в котором написано это самое условие. От этого ромба отходят 2 линии: у одной должно быть название ДА, у другой - НЕТ, другими словами ИСТИНА или ЛОЖЬ.
Вот как это должно выглядеть (рисунок без операторов)
http://konsulytant-inf.narod.ru/progr/image002.gif
Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 26.01.2008, 22:33
Оценка за ответ: 4

Отвечает: Касаткин Сергей Сергеевич
Здравствуйте, Рак Оксана !
Для задания условия, а если точнее для разветвления работы программы служит оператор if(<логическое_выражение>){}else{}. Где на месте логического выражения ставится некоторое условие. Например если вам нужно проверить является ли число введённое с клавиатуры нулём, в случае деления например, т.к. делить на ноль нельзя. То сделать это можно следующим образом. Пусть число хранится в переменной а.
if(a==0)/*Для краткости можно использовать if(!a) результат тот же, а писать меньше. Ведь программисты такие лентяи. :-)*/
{
//дейсвия при а=0
}
else//если а не 0
{
//действия при а!=0
}
Также можно комбинировать условия. Т.е. использовать составное условие. При этом && - логическое и, || - логическое или.
if(a==1&&b==1||c)//Если a=1 и b=1 или с!=0
Кроме всего этого существует ещё оператор switch(<значение>). Он используется когда нам нужно выбрать действие совершаемое при определённом значении переменной. Написано конечно туманно, постараюсь объяснить на примере.
int a=1;
switch(a)
{
case 1:cout<<"a=1";break;//Сюда мы попадём и выведем на экран a=1
case 2:cout<<"a=2";break;
case 3:cout<<"a=3";break;
default:cout<<"Не удалось определить значение а!";break;
};
Надеюсь вам стало немного понятнее. И главное всё просто! Нужно только разобраться. ;-)
---------
WIT BEYOND MEASURE IS MAN’S GREATEST TREASURE.
Ответ отправил: Касаткин Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 26.01.2008, 23:02
Оценка за ответ: 5

Отвечает: Сандров Алекс
Здравствуйте, Рак Оксана !

bool bVar;
int a;
int b;
//
//...
if(true == bVar)
{
a = 4;
}
else
{
a = 5;
}
//...
if(5 == a)
{
b = 3;
}
else
{
b = a;
bVar = FALSE;
}
Ответ отправил: Сандров Алекс (статус: 2-ой класс)
Ответ отправлен: 28.01.2008, 06:17
Оценка за ответ: 4

Отвечает: Lang21
Здравствуйте, Рак Оксана !

У Вас были задачи, где нужно было выводить на экран с помощью звездочек разные фигуры. Все они решаются одним способом. Но для этого нужно правильно записать условие, чтобы получить заданную фигуру. Как мне кажется, ваш вопрос заключается в том, как это сделать.
Попробую вам помочь в этом, в дополнение к уже сказанному об операторе if - else.

Фрагмент программы:

for (i=0; i<10; i++ ) {
for (j=0; j<10; j++) {
cout << '*';
}
cout << endl;
}

выведет квадрат из звездочек (размером 10х10). В процессе вывода:
i - обозначает номер выводимой строки сверху вниз,
j - номер позиции символа в строке слева направо.

То есть, символы нумеруются так:

_______ j
|
|
|

i

Если вставить в программу условие:

for (i=0; i<10; i++ ) {
for (j=0; j<10; j++) {
if (условие)
cout << '*';
else
cout << ' ';

}
cout << endl;
}

то, когда условие выполняется, будет выведена звездочка, когда не выполняется - пробел.
Так можно получить любую фигуру, выбирая условие для i и j.

Например, если в качастве условия в скобках записать i<5,выведется верхняя половина квадрата (строки с 0 по 4), если записать i>=5 - нижняя (строки с 5 по 9)
Аналогично, j<5 выведет левую а j >= 5 - правую половину квадрата.
Условия можно комбинировать, например i<5 && j<5 означает, что звездочка выведется только, если выполняются оба условия, то есть, это условие выделит верхнюю левую четверть квадрата (пересечение прямоугольников). Если записать i<5 || j<5 - условие будет выполнено, если выполнено хотя бы одно из условй, то есть, если точка находится или в верхней половине квадрата, или в левой (получится квадрат без правой нижней четверти).
И так далее.
Для треугольников чуть-чуть сложнее: условие i+j<10 означает, что в нулевой строке (i=0)
будут выведены все 10 символов "*" в первой (i=1) - первые девять, во второй - первые 8
и т. д. Таким образом получится прямоугольный треугольник, занимающий левую верхнюю часть квадрата. Аналогично, условие i+j>10 даст правую нижнюю часть. Аналогично,
i>j - соответствует левому нижнему, а i<j - правому верхнему треугольнику. Эти условия также можно комбинировать, например (i+j<10)&&(i<j) или (i+j>10)||(i<j), выбирая объединения или пересечения треугольников.
Если трудности именно в этом, проще всего поэкспериментировать с такой программой для разных условий, и посмотреть, что получается.
Ответ отправил: Lang21 (статус: 4-ый класс)
Ответ отправлен: 30.01.2008, 16:53
Оценка за ответ: 5
Комментарий оценки:
Вы правильно поняли мой вопрос,большое Вам спасибо, буду разбираться.


Вопрос № 120.336
Добрый вечер уважаемые специалисты. Очень сильно нужна ваша помощь в решении программ. По идее вроде бы все понятно но в тоже же время сделать не получается. Всем кто поможет высокие оценки гарантирую ;)
1. Пользователь с клавиатуры вводит строку. Создается числовой одномерный массив с таким же количеством элементов, сколько у строки – значащих символов. Записывает коды этих символов в числовой массив и, оба массива показывает на экран.

2. Пользователь вводит строку с клавиатуры в фиксированный массив. Необходимо проверить, cколько элементов массива теперь занято, сколько свободно и сколько всего вообще.

3. Показать на экран с m по n символов строки, введенной пользователем и записать данный отрезок в другой массив. (m и n также вводятся пользователем)

4. Удалить с m по n символов, перезаписать строку и показать ее на экран.

5. Пользователь вводит отдельно строку и символ, необходимо показать на экран номера по порядку всех совпадений (нумерация с единицы).

6. Пользователь вводит отдельно строку и символ, необходимо показать на экран номер по порядку только последнего совпадения (нумерация с единицы).

Отправлен: 26.01.2008, 23:00
Вопрос задал: Белоусов Алексей Леонидович (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Касаткин Сергей Сергеевич
Здравствуйте, Белоусов Алексей Леонидович !
Вы правы задачи действительно простые. Решения смотри в приложении.

Приложение:

---------
WIT BEYOND MEASURE IS MAN’S GREATEST TREASURE.

Ответ отправил: Касаткин Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 26.01.2008, 23:37
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за оперативность и помощь в решении программ. Теперь то уж можно почитать и разобраться в чем там не получалось :)

Отвечает: X-men
Здравствуйте, Белоусов Алексей Леонидович !
Вот оставшиеся 3 задачи.
Здесь я использовал несколько иной подход, воспользовавшись массивами символов, а не строками типа string. Дешево и сердито. :)

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 27.01.2008, 05:13
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо за помощь. Тоже очень интересный подход, особенно разобрать разные варианты решения. Это очень хорошо. Спасибо :)


Вопрос № 120.338
Здраствуйте уважаемые эксперты. Прошу помочь с праграммой на языке С. Я ее в приложении написал для удобного чтения!

Приложение:

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

Отвечает: X-men
Здравствуйте, ValZdoM!
Программа, как всегда, написана на MS Visual C++ 2005 Express Edition.
Для вывода информации по столбикам (для красоты) можете воспользоваться функцией setw(int), незабыв подключить заголовочный файл <iomanip>
Удачи!

Приложение:

Ответ отправил: X-men (статус: 10-ый класс)
Ответ отправлен: 27.01.2008, 04:15


Вопрос № 120.343
Здравствуйте. Помогите изменить программу в приложении таким образом, чтобы в paint'е окна по нажатию кнопки ("press me") рисовалась линия. Координаты линии неважно какие, главное чтоб было видно.

Приложение:

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

Отвечает: Попов А.С.
Здравствуйте, Blackie!
В функцию OnHandleEvent добавьте обработку нажатия кнопки

case WM_COMMAND:
if (LOWORD(wParam) == 100) // должно быть значение параметра HMENU кнопки
DoProc(); // смотрите реализацию в приложении
break;

Приложение:

Ответ отправил: Попов А.С. (статус: 7-ой класс)
Ответ отправлен: 27.01.2008, 09:51
Оценка за ответ: 4
Комментарий оценки:
У меня пишет сначала Illegal case, а потом illegal break. Но если закомментировать, то работает.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.70 от 17.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное