Добавлен: 25.10.2018
Просмотров: 2133
Скачиваний: 14
26
4) Схема алгоритма
5) Текст исполняемого модуля
procedure TForm1.Button1Click(Sender: TObject);
Var a,b,c,d,X,Y: Comp;
st: String;
i: Integer;
begin
If (Edit1.Text = '') Or (Edit2.Text = '') Or (Edit3.Text = '') Or (Edit4.Text = '')
Then Begin MessageDlg(Требуется ввести все коэффициенты', mtError,
[mbOk],0);
Exit;
End;
st:= Edit1.Text+Edit2.Text+Edit3.Text+Edit4.Text;
For i:= 1 To Length(st)
Do If Not (st[i] In ['0'..'9','-',','])
Then Begin MessageDlg(Введѐнные коэффициенты должны быть веществен-
ными числами!',mtError,[mbOk],0);
Начало
Инициализация пе-
ременных
A=C
B=-D
X=A*A+B*B
Y=0
X=(A*C)-(B*D)
Y=(A*D)+(B*C);
Вывод X,Y
Конец
27
Exit;
End;
a:= StrToFloat(Edit1.Text);
b:= StrToFloat(Edit2.Text);
c:= StrToFloat(Edit3.Text);
d:= StrToFloat(Edit4.Text);
{Случай сопряжѐнных чисел}
If (a=c)and(b=-d)
Then Begin X:=a*a+b*b;
Edit5.Text:=FloatToStr(X);
End
Else Begin X:=(a*c)-(b*d);
Y:=(a*d)+(b*c);
Edit5.Text:= FloatToStr(X)+'+('+FloatToStr(Y)+'i)';
end;
end;
procedure TForm4.Button3Click(Sender: TObject);
Var st,stn,stg,str: String;
X,Y: Real;
A: TMas;
i,j,k: Integer;
Begin If (F1OK = False) Or (F2OK = False)
Then Begin MessageDlg('Требуется задать имена входного и исходного фай-
лов',mtError,[mbOk],0);
Exit;
End;
AssignFile(F1,F1Name); AssignFile(F2,F2Name);
Reset(F1); Rewrite(F2); k:= 0;
While Not(EOF(F1))
Do Begin ReadLn(F1,st); Inc(k);
If st[Length(st)] <> ';'
Then Begin MessageDlg(„Ошибка в файле: строка '+IntToStr(k)+' не окан-
чивается на ";"!',mtError,[mbOk],0);
Exit;
End;
i:= 1; j:= 1; stg:= '';
While True
Do Begin stn:= st[i];
If Not (stn[1] In ['0'..'9','-',',',';',' '])
Then Begin MessageDlg('Ошибка в файле: символ "'+stn+'", находя-
щийся в строке '+IntToStr(k)+', позиция '+IntToStr(i)+' некорректен!' ,mtError,
[mbOk],0);
Exit;
End;
If stn = ';'
28
Then Begin A[j]:= StrToFloat(stg);
Break;
End;
If stn <> ' '
Then stg:= stg+stn
Else Begin A[j]:= StrToFloat(stg);
stg:= '';
Inc(j);
End;
Inc(i);
End;
str:= 'Входные данные: '+FloatToStr(A[1])+'+('+FloatToStr(A[2])+')i *
'+FloatToStr(A[3])+'+('+FloatToStr(A[4])+')i; Выходные данные: ';
{Случай сопряженных чисел}
If (A[1]=A[3]) and (A[2]=-A[4])
Then Begin X:=A[1]*A[1]+A[2]*A[2];
str:= str+FloatToStr(X);
End
Else Begin X:=(A[1]*A[3])-(A[2]*A[4]);
Y:=(A[1]*A[4])+(A[2]*A[3]);
str:= str+FloatToStr(X)+'+('+FloatToStr(Y)+'i)';
end;
WriteLn(F2,str);
End;
CloseFile(F1); CloseFile(F2);
Form4.Close;
end;
29
Приложение Д
Компоновка форм
1. Окно основной формы интерфейса.
2. Окно информации о программе.
3. Окно пояснения по работе с программой.
30
Приложение Е
Разработка сценариев и реакций на события согласно сценариям.
1) Графы возможных сценариев работы программы.
Нажатие
на кнопку
"Решить"
Пустые
поля?
Выбор
файла
Нажатие
на кнопку
"Выбор файла
с исходными
данными"
Нажатие
на кнопку
"Обработка
массива
данных"
Вывод
сообщения
об ошибке
Вывод
ответов
Данные
кор-
ректны?
Обработка
Данные
кор
ректны?
Строка
заканчи-
вается
на ";"?
Имена
файлов
введены?
Нажатие
на кнопку
"Начать
обработку"
Нажатие
на кнопку
"Выбор файла с
результатом"
2) Тексты процедур обработки событий.
- Проверка на пустые поля
If (Edit1.Text = '') Or (Edit2.Text = '') Or (Edit3.Text = '') Or (Edit4.Text = '')
Then
Begin
MessageDlg('Требуется
ввести
все
коэффициенты!',mtError,[mbOk],0);
Exit;
End;
- Проверка на ошибки ввода
st:= Edit1.Text+Edit2.Text+Edit3.Text+Edit4.Text;
For i:= 1 To Length(st)
Do If Not (st[i] In ['0'..'9','-','+',',','E','e'])
Then Begin MessageDlg('Введенные коэффициенты должны быть веще-
ственными числами!',mtError,[mbOk],0);