Файл: Человеко-машинный интерфейс МУ.pdf

ВУЗ: Не указан

Категория: Методичка

Дисциплина: Программирование

Добавлен: 25.10.2018

Просмотров: 2134

Скачиваний: 14

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

16 

Начало

Инициализация переменных

D=(d-b)^2+4ac

D>=0

D>0

Да

X1:=(b-d+sqrt(D))/2c

X1:=(b-d)/2c

X2:=(b-d-sqrt(D))/2c

Вывод  x1,y1,x2,y2

Y1:=cX1+d

Y2:=cX2+d

Y1:=cX1+d

Вывод

(‘корней нет’)

Нет

Конец

Нет

Да

Вывод  x1,y1

 

 

Рисунок А.1 

 
Текст функции, выполняющей решение системы уравнений: 
 int solution_equation(double a,double b, double c, double d,long double &resultX1, 
long double &resultX2, long double &resultY1, long double &resultY2) 

  //вычитаем из первого уравнения второе, домножаем всѐ на x и получаем: a + b*x 
-c*x*x - d*x = 0   => -c*x*x + (b-d)*x + a = 0 
  //временные переменные для преобразования типов 
  long double tmp_a = a; 
  long double tmp_b = b; 
  long double tmp_c = c; 
  long double tmp_d = d; 
  //временные переменные для сохранения результатов 
  long double x1 = 0, x2 = 0; 
  long double y1 = 0, y2 = 0; 
  //решение системы уравнений 
  long double D =  (tmp_b - tmp_d)*(tmp_b - tmp_d) + 4*tmp_a*tmp_c; 


background image

 

17 

  if (D < 0.0) return SQ_ERROR_NO_ROOT; 
  if (D == 0.0) 
   { 
    //один корень 
      if (tmp_c == 0) return SQ_ERROR_DIV_BY_ZERO; 
      x1 = (tmp_b - tmp_d) /(2 * tmp_c ); 
      if (x1 == 0) return SQ_ERROR_DIV_BY_ZERO; 
      y1 = tmp_c * x1 + tmp_d; 
      resultX1 = x1; resultY1 = y1; 
      resultX2 = x1; resultY2 = y1; 
      return SQ_SUCCES_ALONE_ROOT; 
   } 
  if  (D > 0.0) 
   { 
    //два корня 
      if (tmp_c == 0) return SQ_ERROR_DIV_BY_ZERO; 
      x1 = (-1.0*(tmp_b - tmp_d) + sqrt(D)) /(-2 * tmp_c ); 
      y1 = tmp_c * x1 + tmp_d; 
      x2 = (-1.0*(tmp_b - tmp_d) - sqrt(D)) /(-2 * tmp_c ); 
      y2 = tmp_c * x2 + tmp_d; 
      if ((x1 == 0)&&(x2 != 0)) 
       { 
        resultX1 = x2; resultY1 = y2; 
        resultX2 = x2; resultY2 = y2; 
        return SQ_SUCCES_ALONE_ROOT; 
       } 
      if ((x2 == 0)&&(x1 != 0)) 
       { 
        resultX1 = x1; resultY1 = y1; 
        resultX2 = x1; resultY2 = y1; 
        return SQ_SUCCES_ALONE_ROOT; 
       } 
      if ((x1 == 0)&&(x2 == 0)) return  SQ_ERROR_DIV_BY_ZERO; 
      resultX1 = x1; resultY1 = y1; 
      resultX2 = x2; resultY2 = y2; 
      return SQ_SUCCES_TWO_ROOT; 
   } 


background image

 

18 

Тестовые примеры: 

 
1) Система умеет 2 решения: 
Входные данные: 

4

3

2

1

d

c

b

a

 

Выходные данные: 

5

;

33

,

0

1

;

1

2

2

1

1

y

x

y

x

 

 
2)Система имеет 1 решение: 
Входные данные: 

5

2

1

2

d

c

b

a

 

Выходные данные: 
 

3

;

1

1

1

y

x

 

 
2)Система не  имеет  решений: 
Входные данные: 

3

2

1

10

d

c

b

a

 

Выходные данные: 
Система уравнений не имеет решения ! 
 
 

При большом объеме данных предусмотрен ввод данных из файла, а так же 

вывод результатов в файл. По умолчанию файлом для входных данных является 
input.ini . Вывод результатов осуществляется в файл results.ini. 
 


background image

 

19 

Приложение Б 

 

Компоновка форм 

 
 

В программе используется четыре формы: главная форма, информация о 

программе, помощь и массовая обработка данных. 

Главная форма представлена на рисунке Б.1. 

 

Рисунок Б.1 

 
 

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

этой форме использованы следующие элементы VBL: 
Edit – ввод исходных данных; 
Memo – вывод результатов; 
Image – рисунок (исходная система); 
Button – кнопка запуска решения; 
Label – вспомогательная информация. 

Форма с информацией о программе и авторе представлена на рисунке Б.2. 

 

Рисунок Б.2 

 

В этой форме использованы следующие элементы VBL: 
Image – рисунок(исходная система); 
Label – вспомогательная информация. 

Форма, содержащая информацию, которая помогает пользователю работать 

с программой, представлена на рисунке Б.3. 


background image

 

20 

 

Рисунок Б.3 

 

В этой форме использованы следующие элементы VBL: 
Label – вспомогательная информация. 

Форма, реализующая массовую обработку данных, представлена на рисунке 

Б.4. 

 

Рисунок Б.4 

 

Этот режим работы используется при большом объеме входных и выходных 

данных. Ввод данных осуществляется из файла, вывод – в файл. 

В этой форме использованы следующие элементы VBL: 
Button – кнопка запуска решения; 
Label – вспомогательная информация; 
GroupBox - вспомогательная информация.