![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ход работы. 1. Загрузите среду визуального программирования Bilder C++
1. Загрузите среду визуального программирования Bilder C++. Сохраните новый проект на компьютере в новой папке. 2. Измените заголовок формы в свойстве Caption – Броуновское движение. 3. Вставьте в форму объект типа TPaintBox, как показано на рис4.4. Для этого щелкните на пиктограмме объекта типа PaintBox, которая находится на закладке System палитры компонентов главного окна Bilder C++. 4. После этого щелкните в точке вставки на форме. Разверните на все окно формы как показано на рисунке выше. Измените его название со значения по умолчанию PaintBox1 на более звучное Screen. 5. Добавьте на форму кнопку, нажатием которой вся система будет запускаться. В качестве её названия введите StartStopBtn, а в качестве надписи на ней Пуск
6. Нажатием клавиши F12 перейдите в окно кода программы и подключите библиотеки #include < stdlib.h> #include < math.h> в модуле Unit1.cpp #include < Math.hpp> в модуле Unit1.h 7. Добавим описание глобальных переменных и констант, после объявления объекта TForm1 *Form1;
bool IsRunning=false; struct Molecule { int X, Y, Vx, Vy; bool WasCollision; // указывает на столкновение с броуновской частицей во время предыдущей итерации }; const int N=30; // количество молекул const int Rb=60; //радиус броуновской частицы const float K=0.01; //коэффициент передачи 8. Двойным щелчком на кнопке StartStopBtn перейдите к редактированию обработчика события в полученную заготовку в окне кода программы void __fastcall TForm1:: StartStopBtnClick(TObject *Sender) { // скопировать код программы из проекта 4, задачи идеальный газ. } 9. В теле функции добавим описание переменных, координаты броуновской частицы Xb, Yb. И составляющие скорости броуновской частицы Vxb, Vyb
float Xb, Yb; float Vxb, Vyb; 10. Определим начальные значения этих переменных: пусть вначале частица находится в центре аквариума, а скорость её рана нулю. Для программирования где-нибудь в начале (например, после вызова Screen-> Refresh(); добавьте строки Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Xb=Screen-> Width / 2; Yb=Screen-> Height/2; Vxb=0; Vyb=0; 11. В тело цикла инициализации молекул (то есть там, где мы определяем начальное положение и скорость каждой молекулы) необходимо добавить указание того, что молекула еще ни разу не сталкивалась с броуновской частицей for (i=0; i< n; i++) { ………………….. Mol[i].WasCollision=false; } 12. Далее создадим код, обрабатывающий столкновение объектов. Поместим этот фрагмент сразу после строк, рисующих молекулу на новой позиции по следующему алгоритму: ЕСЛИ произошло столкновение ТО ЕСЛИ на предыдущей итерации эта молекула не сталкивалась с частицей, ТО Обрабатываем столкновение КОНЕЦЕсли Фиксируем, что на данной итерации i-я молекула столкнулась с броуновской частицей ИНАЧЕ Фиксируем, что столкновения не было.
Screen-> Canvas-> Pen-> Color=clBlue; Screen-> Canvas-> Ellipse(Mol[i].X - R, Mol[i].Y - R, Mol[i].X + R, Mol[i].Y + R); //новый код if (sqrt(pow(Mol[i].X-Xb, 2)+pow(Mol[i].Y-Yb, 2)) < (Rb+ R)) { if(Mol[i].WasCollision= = false) { Vxb=Vxb+K*Mol[i].Vx; Vyb=Vyb+K*Mol[i].Vy; } Mol[i].WasCollision=true; } else
Mol[i].WasCollision=false;
} 13. Осталось добавить последнее, это обновить положение броуновской частицы на экране. Алгоритм: a. Стереть частицу b. Сдвинуть на новую позицию c. Обработать отражение от стенок аквариума d. Нарисовать частицу на новом месте Делается это сразу после окончания цикла for (;;) движения молекулы, но в теле цикла while() {} // a Screen-> Canvas-> Pen-> Color=clBtnFace; Screen-> Canvas-> Ellipse(ceil(Xb-Rb), ceil(Yb-Rb), ceil(Xb+Rb), ceil(Yb+Rb)); //b Xb=Xb+Vxb; Yb=Yb+Vyb; //c if (Xb> Screen-> Width-Rb) { Xb=Screen-> Width-Rb; Vxb= -Vxb; } if (Xb< Rb) {Xb=Rb; Vxb= -Vxb; } if (Yb> Screen-> Height-Rb) { Yb=Screen-> Height-Rb; Vyb=-Vyb; } if (Yb< Rb) {Yb=Rb; Vyb= -Vyb; } //d Screen-> Canvas-> Pen-> Color=clRed; Screen-> Canvas-> Ellipse(ceil(Xb-Rb), ceil(Yb-Rb), ceil(Xb-Rb), ceil(Yb+Rb)); Sleep(10); Application-> ProcessMessages();
Указание: Если возникли ошибки по алгоритму программы, воспользуйтесь готовым вариантом проекта 5, реализованного в языке Дельфи. Расположенного в папке \Пректы\Проект5\Модель3Brown. Как образец кода программы при нажатии кнопки StartStopBtn. Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе Для этого скопируйте папку в виртуальную машину, запустите файл В среде Дельфи, перейдите в окно кода программы щелчком на кнопке, откроется код программы. Сравните со своим кодом, написанным на Builder C++, они почти должны совпадать. Таким образом самостоятельно можно исправить возникшие ошибки. В проекте №4, были уже даны указания по кодировке алгоритма с языка Паскаль на язык С++
|