методичка. метода по ООП для практики. Лабораторная работа 1. Линейный вычислительный процесс 2 Общие теоретические сведения 2 Создание оконного приложения 6
Скачать 1.1 Mb.
|
2.3. Пример выполнения заданияВвести исходные данные x, y, z. Вычислить значение u в зависимости от выбора: sin(x), cos(x) или tg(x), после чего определить максимальное либо из u, y, z, либо из их модулей – |u|, |y|, |z|. 2.3.1. Реализация примера оконного приложения Cоздать форму, представленную на рис. 2.1, скорректировать текст надписей, положение окон Edit и написать соответствующую программу. Компонента СheckBoxВ меню Standard выберите пиктограмму , поместите ее в нужное место формы, измените заголовок Caption на «max модулей», после чего в тексте программы появится переменная CheckBox1 типа TСheckBox. В зависимости от того, сделан выбор или нет, булева переменная CheckBox1->Checked будет принимать значение true или false. Компонента RadioGroupВ меню Standard выберите пиктограмму , поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1. Замените заголовок (Caption) на «Выбор функции». В инспекторе объектов в свойстве Items вызовите строчный редактор списка заголовков кнопок и наберите три строки с именами выбираемых функций (cos(x), sin(x), tg(x)), нажмите ОК. После этого внутри компоненты появятся три кнопки-переключателя с введенными надписями. В тексте Unit1.h появилась переменная RadioGroup1 типа TRadioGroup. Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroup1->ItemIndex будет находиться номер выбранной строчки (отсчитывается от нуля). В функции FormCreate() желательно установить начальное значение этой переменной, например, RadioGroup1->ItemIndex = 0. Подготовив форму, создайте функции-обработчики событий FormСreate и Botton1Сlick аналогично первой работе. Текст функций приведен в примере. Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно. Форма приведена на рис. 2.1. Рис. 2.1 Текст программы может быть следующим: //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "math.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Edit1->Text="0,1"; Edit2->Text="0,356"; Edit3->Text="-3,5"; Memo1->Clear(); Memo1->Lines->Add("Лабораторная работа 2"); RadioGroup1->ItemIndex = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { double x,y,z,u,ma; x=StrToFloat(Edit1->Text); y=StrToFloat(Edit2->Text); z=StrToFloat(Edit3->Text); // Проверка номера нажатой кнопки и выбор соответствующей функции switch(RadioGroup1->ItemIndex){ case 0: u=cos(x); Memo1->Lines->Add("Cos(x)= "+FloatToStrF(u,ffFixed,8,6)); break; case 1: u=sin(x); Memo1->Lines->Add("Sin(x)= "+FloatToStrF(u,ffFixed,8,6)); break; case 2: u=tan(x); Memo1->Lines->Add("Tg(x)= "+FloatToStrF(u,ffFixed,8,6)); break; } // Проверка состояния кнопки CheckBox1 if (CheckBox1->Checked){ u = fabs(u); y = fabs(y); z = fabs(z); } // Нахождение максимального из трех чисел if (u>y) ma=u; else ma=y; if (z>ma) ma=z; if (CheckBox1->Checked) Memo1->Lines->Add("Max модулей= "+FloatToStrF(ma,ffFixed,8,6)); else Memo1->Lines->Add("Max= "+FloatToStrF(ma,ffFixed,8,6)); } 2.3.1. Пример написания программы консольного приложенияТекст программы может иметь вид //--------------------------------------------------------------------------- #include #include #include #include #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { double x,y,z,u,ma; int kod; puts("Input x, y, z"); scanf("%lf%lf%lf",&x, &y, &z); puts("Function U(x):\n 0 - cos(x)\n 1 - sin(x)\n 2 - tan(x)"); scanf("%d", &kod); switch(kod){ case 0: u=cos(x); printf("\n\tCos(x)= %8.6lf",u); break; case 1: u=sin(x); printf("\n\Sin(x)= %8.6lf",u); break; case 2: u=tan(x); printf("\n\Tg(x)= %8.6lf",u); break; } puts("\nMax ABS - 1, Else - Max"); scanf("%d", &kod); if (kod == 1){ u = fabs(u); y = fabs(y); z = fabs(z); } if (u>y) ma=u; else ma=y; if (z>ma) ma=z; if (kod==1)printf("Max ABS = %8.6lf", ma); else printf("Max = %8.6lf", ma); puts("\nPress any key ... "); getch(); return 0; } Результаты выполнения программы: |