Читать диплом по математике: "Математическое моделирование физических задач на ЭВМ" Страница 12

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

схемы

Расчет схемыРисунок №5. Вывод результата вычисления токов в ветвях схемы.

Результаты вычислений

Токи Резисторы Рисунок №6. Просмотр направления токов в ветвях схемы.

Значения токов

Направления токов

Рисунок №7. Вид экрана при сохранении схемы в файл.

Сохранение схемы

Рисунок №8. Меню – Окно.

Работа с окнами

Рисунок №9. Вид экрана при закрытии всех окон.

Указатель мыши

Меню

Строка статусаИнформация о свободной памяти Рисунок №10. Окно помощи выводимое на экран при нажатии клавиши F1.

Закрытие окна

Окно с помощью программы

Горизонтальный скролинг

Вертикальный скролинг

II. Листинг программы на языке Паскаль.1. Основная программа

Program UzPotenc; {Метод узловых потенциалов}

{$F+,O+,X+,V-,R-,I-,S-}

Uses

Crt, Applic1, Objects, Drivers, Dialogs, Views, Menus, App, StdDlg,

Fonts, HelpFile, MsgBox, TxtRead, WInDows, PalObj, Grv16, DemoHlp,

Types2;

Type TNewApp=Object(TMyApp)

Procedure ReCounte; Virtual;

End;

Var MyApp:TNewApp;

Type

PMyCollection=^TMyCollection;

TMyCollection=Object(TCollection)

Procedure FreeItem(Item:poInter); Virtual;

End;

Procedure CurView; {Просмотр значений токов}

Var R,R1:TRect;

D:PDialog;

L:PListBox;

C:PMyCollection;

Sb:PScrollBar;

i:Integer;

s:String;

Begin

Sb:=Nil;

MyApp.ShemeWInDow^.GeTextentWIn(R);

R.B.X:=R.A.X+(R.B.X-R.A.X) Div 4;

D:=New(PDialog,Init(R,'Значения токов'));

D^.GeTextentWIn(R);

Inc(R.A.Y,CurrentFont^.Height*2);

R1.Copy(R);

R1.A.X:=R1.B.X-CurrentFont^.Width*2;

If RCount>(R.B.Y-R.A.Y) Div CurrentFont^.Height

Then

Begin

Sb:=D^.StAndardScrollBar(sbVertical+sbHAndleKeyBoard);

End;

C:=New(PMyCollection,Init(RCount,1));

For i:=1 To RCount Do

Begin

Str(abs(Currents[i]):9:6,s);

If i Div 10>0

Then C^.Insert(NewStr('I'+IntToStr(i)+'='+s+'A'))

Else C^.Insert(NewStr(' I'+IntToStr(i)+'='+s+'A'))

End;

L:=New(PListBox,Init(R,1,Sb));

L^.NewList(C);

D^.Insert(L);

R.B.Y:=R.A.Y;

Dec(R.A.Y,CurrentFont^.Height*2);

D^.Insert(New(PLabel,Init(R,' Токи в ветвях',L)));

DeskTop^.Insert(D);

End;

Procedure TNewApp.ReCounte;{Обсчет}

Var

i,j,k,l,m,Ii,Sizex,Index:Integer;

A:TElAr;

f1,f2:Boolean;

Ratio:Real;

Function Vetv1(Ai,Aj,Ad:Integer):Boolean;

{Функция сохраняет в A ветвь от элемента (Ai,Aj) в направлении Ad (0-Up,1-Down,2-Left,3-Right и возвращает TRUE, если она содержит элементы}

Var i,j,k,l:Integer;

Flag1,Flag2:Boolean;

Begin

Flag1:=True;

Flag2:=False;

With A[Index] Do

Begin

Str:=Ai; Col:=Aj;

Num:=Sheme[Ai,Aj,2];

Typ:=Sheme[Ai,Aj,1];

End;

Inc(Index);

Case Ad Of

0: Begin i:=Ai+1; j:=Aj-1;End;

1: Begin i:=Ai-1; j:=Aj+1;End;

2: Begin i:=Ai-1;j:=Aj+1; End;

3: Begin i:=Ai+1;j:=Aj-1; End;

End;

While Flag1 And (i>0) And (j>0) And (i


Интересная статья: Быстрое написание курсовой работы