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

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


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

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

Выпуск № 603
от 06.12.2006, 01:35

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


Вопрос № 64868: Уважаемые эксперты! столкнулась с проблемой. :( помогите пожалуйста найти решение. В приложении представлена сортировка одномерного массива. Требуется изменить ее так, чтобы сортировались только ненулевые элементы, то есть нулевые элементы от...
Вопрос № 64907: Здравствуйте! вот код программы которая должна складывать, вычитать векторы в 3х-мерном пространстве нах0дить их длинну Обьясните мне что такое x1,x2,x3 если это координаты вектора то тогда зачем a,b,c и если не затруднит- напишите ф-ю input-...
Вопрос № 64977: Здравствуйте, эксперты! Помогите, пожалуйста, по языку С. Мне необходимо текст программы с комментариями и результаты работы программы. 1. Для матрицы M[5][5] найти минимальный элемент лежащий выше главной диагонали и поменять его с сим...
Вопрос № 65007: Прошу помощи. Как в Visual C++ можно сделать обычное диалоговое окно округлой формы ? Тоесть диалоговое окно слегка с округлыми (тупыми) углами, примерно как в Windows XP Приведите пожалуйста кусочек кода этой функции с комментариями ..

Вопрос № 64.868
Уважаемые эксперты! столкнулась с проблемой. :( помогите пожалуйста найти решение.
В приложении представлена сортировка одномерного массива.
Требуется изменить ее так, чтобы сортировались только ненулевые элементы, то есть нулевые элементы отставались на своих местах
Заранее спасибо.
Mary

Приложение:

Отправлен: 30.11.2006, 03:44
Вопрос задала: Mary (статус: 3-ий класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Терсков Сергей
Здравствуйте, Mary!
Попробуй во внутренние циклы вставить что-то вроде

if(mas1[...] == 0)
contunue;
Ответ отправил: Терсков Сергей (статус: 2-ой класс)
Ответ отправлен: 30.11.2006, 04:04
Оценка за ответ: 4
Комментарий оценки:
к сожалению, это не помогло :(

Отвечает: PROD
Здравствуйте, Mary!
int mas[20],c;
randomize();
for(int i=0;i<20;i++){
mas[i]=random(20)-9;
Label1->Caption=Label1->Caption+" "+IntToStr(mas[i]);
}
for(int i=0;i<20;i++){
if(mas[i]!=0){
for(int j=i;j<20;j++){
if((mas[i]>mas[j])&&(mas[j]!=0)){
c=mas[j];
mas[j]=mas[i];
mas[i]=c;
}
}
}
}

for(int i=0;i<20;i++){
Label2->Caption=Label2->Caption+" "+IntToStr(mas[i]);
}

вот собственно и все. обычная пузырьковая сортировка + 2 условия:
если mas[i]==0 мы его не сортируем и
если mas[j]==0 мы с ним не обмениваемся
Ответ отправил: PROD (статус: 5-ый класс)
Ответ отправлен: 30.11.2006, 08:44

Отвечает: Sergey A. Wedensky
Здравствуйте, Mary!

Не понял Вашего кода, да он и не работает - на строку mas1[x]=mas1[b] приходит с неинициализированной x.
В приложении рабочий код.

Приложение:

Ответ отправил: Sergey A. Wedensky (статус: 9-ый класс)
Ответ отправлен: 30.11.2006, 09:52


Вопрос № 64.907
Здравствуйте!
вот код программы которая должна складывать, вычитать векторы в 3х-мерном пространстве нах0дить их длинну
Обьясните мне что такое x1,x2,x3 если это координаты вектора то тогда зачем a,b,c и если не затруднит- напишите ф-ю input-ввод данных и main...
Спасибо

Приложение:

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

Отвечает: Ross
Здравствуйте, W4rmonger!

Код в приложении. Если непонятно, советую почитать какую-нибудь книгу по C++ и обратить внимание на создание классов.

Приложение:

Ответ отправил: Ross (статус: 3-ий класс)
Ответ отправлен: 01.12.2006, 02:24


Вопрос № 64.977
Здравствуйте, эксперты!
Помогите, пожалуйста, по языку С. Мне необходимо текст программы с комментариями и результаты работы программы.

1. Для матрицы M[5][5] найти минимальный элемент лежащий выше главной диагонали и поменять его с симметричным элементом, лежащим ниже этой диагонали.
2. Ввести две символьных строки. Выполнить вставку второй строки в пер-вую с позиции, введенной с клавиатуры. Новых строк не создавать. Строку до и после преобразования вывести на экран
3. Выполнить слияние двух рассортированных текстовых файлов в третий упорядоченный файл. Сортировок не использовать. Дополнительных масси-вов и файлов не использовать.

По первой задаче интересует также блок-схема и описание алгоритма работы по шагам.
Отправлен: 30.11.2006, 19:12
Вопрос задал: ШИЮ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ross
Здравствуйте, ШИЮ!

Ответы на первые 2 вопроса в приложении. Насчет третьего вопроса: совсем не ясно что именно нужно делать. Опишите подробнее.

Приложение:

Ответ отправил: Ross (статус: 3-ий класс)
Ответ отправлен: 30.11.2006, 23:31


Вопрос № 65.007
Прошу помощи.
Как в Visual C++ можно сделать обычное диалоговое окно округлой формы ?
Тоесть диалоговое окно слегка с округлыми (тупыми) углами, примерно как в Windows XP
Приведите пожалуйста кусочек кода этой функции с комментариями
Отправлен: 01.12.2006, 01:05
Вопрос задал: Visualss (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Torsten
Здравствуйте, Visualss!
В windows для этого используются регионы.
Можете поискать статью на RSDN.ru про регионы для более кокретной информации, с примерами на WINAPI и MFC.

Суть в том, что для окна нужно установить новый регион.
В windows есть специальные функции, которые создают регион по заданным в них параметрам.
Регионы можно склеивать различными способами. То есть например создать пару регионов слева и справа (центр оставить пустым) и соединить их. После установки такого региона можно будет наблюдать куски окна справа и слева, а в центре ничего не будет. Конечно приминить это для чего-то трудно, но главное возможности, а их много.

Теперь конкретнее разбирем ситуацию вашего случая.
В WINAPI для работы с регионами предназначен хендл HRGN, в MFC класс CRgn.
Список функций для создания регионов в классе CRgn
CombineRgn
CreateEllipticRgn
CreateEllipticRgnIndirect
CreateFromData
CreateFromPath
CreatePolygonRgn
CreatePolyPolygonRgn
CreateRectRgn
CreateRectRgnIndirect
CreateRoundRectRgn << тебе нужна эта функция, она и создает прямоугольник с закгругленными углами.

Вот ее описание:
BOOL CreateRoundRectRgn(int x1,int y1,int x2, int y2, int x3,int y3);
Первые 4 параметры это left,top,right,bottom у прямоугольника, из которого ты создаешь регион.
А вот последние два параметра задают ширину и высоту в пискелях с которой будут закруглятся углы. Экспеременитрую с ними и добьешся нужного результат.
Если они будут равны 0, соотвественно угол будет полностью прямой, то есть 90 градусов, то есть еще проще он не изменится.

Описание других функий см. в MSDN.

Теперь далее, как все это приминить на деле. Для диалога легко. Нужно устанавливать регион в обработчике события WM_SIZE, то есть когда размер окна изменяется.
Пример в приложении.

Если это делать например только при инициализации диалога, то окно будет отображатся не правильно, после изменения размеров окна.
Хотя я бы рекомендовал на всякий случай дублировать код установки региона в OnInitDialog.

Приложение:

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

Ответ отправил: Torsten (статус: 3-ий класс)
Ответ отправлен: 01.12.2006, 15:42


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

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

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

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

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

В избранное