Главная страница
Навигация по странице:

  • 2.3.1. Реализация примера оконного приложения

  • CheckBox

  • RadioGroup

  • Button1Click

  • методичка. метода по ООП для практики. Лабораторная работа 1. Линейный вычислительный процесс 2 Общие теоретические сведения 2 Создание оконного приложения 6


    Скачать 1.1 Mb.
    НазваниеЛабораторная работа 1. Линейный вычислительный процесс 2 Общие теоретические сведения 2 Создание оконного приложения 6
    Анкорметодичка
    Дата11.01.2022
    Размер1.1 Mb.
    Формат файлаdoc
    Имя файламетода по ООП для практики.doc
    ТипЛабораторная работа
    #328342
    страница6 из 19
    1   2   3   4   5   6   7   8   9   ...   19

    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;

    }

    Результаты выполнения программы:



    1   2   3   4   5   6   7   8   9   ...   19


    написать администратору сайта