схемы
Расчет схемыРисунок №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
Похожие работы
Тема: Математическое моделирование физических задач на ЭВМ |
Предмет/Тип: Физика (Реферат) |
Тема: Моделирование ЭВМ |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
Тема: Моделирование ЭВМ |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
Тема: Решение задач с помощью ЭВМ |
Предмет/Тип: Другое (Учебное пособие) |
Тема: Решение задач с помощью ЭВМ |
Предмет/Тип: Информатика, ВТ, телекоммуникации (Учебное пособие) |
Интересная статья: Быстрое написание курсовой работы