Организация интерфейса в windows. Нахождение корней уравнение методом касательных. Закраска области методом простого ЦДА с использованием XOR

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

ГОУВПО «Комсомольский–на–Амуре 

государственный технический университет»

Кафедра математического обеспечения и применения ЭВМ

Лабораторная работа №5

по дисциплине «ЧМВ»

тема «ОРГАНИЗАЦИЯ ИНТЕРФЕЙСА  В WINDOWS»

Группа: 5ВТ-1

Студент:

Преподаватель: А,

Комсомольск-на-Амуре

2007

Задание

Создание пользовательского интерфейса в среде визуального программирования BORLAND C++ BUILDER 6.0.

ПРИМЕР 1 (Нахождение корней уравнение методом касательных):

Шаг 1:

Создание самого интерфейса:

Рис.1

На рис.1. Показаны элементы,  за счет которых пользователь осуществляет диалог с компьютером.

Исходный код  программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

float f(float x)  

{

  int a,b,c,d;

  a=StrToInt(Form1->Edit3->Text);

  b=StrToInt(Form1->Edit4->Text);

  c=StrToInt(Form1->Edit5->Text);

  d=StrToInt(Form1->Edit6->Text);

  return (a*x*x*x+b*x*x+c*x+d);

}

float fpro(float x)

{ int e,f,g,h;

  e=StrToInt(Form1->Edit3->Text);

  f=StrToInt(Form1->Edit4->Text);

  g=StrToInt(Form1->Edit5->Text);

return (e*3*x*x+f*2*x+g);}

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 if (Form1->Edit3->Text==""||Form1->Edit4->Text==""||Form1->Edit5->Text==""||Form1->Edit6->Text=="")

  {

  MessageBox(NULL,"Внимание, вам необходимо/nввести значения констант!","Error",MB_ICONINFORMATION);

  }

 float eps=0.001, m=3.03;

 float x0=0, x_current, x_next;

 x_current=x0;

 do                 {

                       x_next=x_current-f(x_current)/fpro(x_current);

                       x_current=x_next;

                       }while(fabs(f(x_next))>=m*eps);

      Form1->Edit1->Text=x_next;

      Form1->Edit2->Text=f(x_next);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

exit(0);

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

 MessageBox(NULL,"Action + (c)\n . Р.\nКнАГТУ\n2007-2008","About...",MB_ICONINFORMATION);

}

//---------------------------------------------------------------------------

Результат:

Пример 2 (Закраска области методом простого ЦДА с использованием XOR):

В данном примере пользователь задает параметры выводимой фигуры сам:

Исходный код программы:

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <SysUtils.hpp>

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//---------------------------------------------------------------------------

TCanvas *DC;

int maxX, maxY;

void pcda(int, int, int, int);

void __fastcall TForm1::ReSize(TObject *Sender)

{

  DC = Form1->Image1->Canvas;

  int i, j;

  maxX = Form1->Image1->Width, maxY = Form1->Image1->Height;

  DC->Pen->Width = 3;

  DC->Pen->Mode = pmXor;

  int a1,a2,a3;

  a1=StrToInt(Edit19->Text);

  a2=StrToInt(Edit20->Text);

  a3=StrToInt(Edit21->Text);

  DC->Pen->Color = RGB(a1, a2, a3);

  TRect rect;

  rect.left = 0;

  rect.right = maxX;

  rect.top = 0;

  rect.bottom = maxY;

  DC->FillRect(rect);

}

//---------------------------------------------------------------------------

void pcda(int x0, int y0, int x1, int y1)

{

  int n, curx = x0, cury = y0, i;

  float dx, dy, mem = 0.5;

  n = abs(x1 - x0);

  if (n < abs(y1 - y0))

    n = abs(y1 - y0);

  dx = (0. + x1 - x0) / n;

  dy = (0. + y1 - y0) / n;

  if (dx == 1 || dx == -1)

  {

    for (i = 0; i < n; ++i)

    {

      DC->MoveTo(curx, cury);

      DC->LineTo(curx, cury);

      curx += dx;

      mem += dy;

      DC->Pen->Width = 1;

      if (mem >= 1)

Похожие материалы

Информация о работе