Головна | Мій профіль | Реєстрація | Вихід | Вхід | RSSЧетвер, 24.05.02, 12:55


 
Меню сайту
Категорії розділу
Документи [12]
Методичні розробки [19]
Література [10]
Роботи учнів [6]
Наше опитування
Оцініть наш сайт
Всього відповідей: 353
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0
Форма входу




 

 







Каталог файлів

Головна » Файли » Роботи учнів

Програма для моделювання електричного поля системи електричних зарядів
[ Викачати з сервера (1.3 Kb) ] 15.01.11, 00:08

uses crt, graph;
var gd, gm, n, i, a, j, k: integer;
x, y, q: array[1..10] of integer;
r, Ex, Ey: array[1..10] of real;
arad, x1, x2, y1, y2, E, SumEx,SumEy,dl,min: real;
begin
n:=5;
x[1]:=100; y[1]:=240; q[1]:=5;
x[2]:=450; y[2]:=150; q[2]:=-10;
x[3]:=300; y[3]:=350; q[3]:=30;
x[4]:=50; y[4]:=400; q[4]:=15;
x[5]:=200; y[5]:=10; q[5]:=-5;
dl:=1;
gd:=detect;
Initgraph(gd,gm,'');
for i:=1 to n do
begin
   a:=0; setcolor(white);
while a<360 do
begin
arad:=pi*a/180;
   x1:=x[i]+dl*cos(arad);
   y1:=y[i]+dl*sin(arad);
repeat
         SumEx:=0; SumEy:=0; min:=1000;
for k:=1 to n do
begin
         r[k]:=sqrt(sqr(x1-x[k])+sqr(y1-y[k]));
Ex[k]:=q[k]*(x1-x[k])/(r[k]*r[k]*r[k]);
Ey[k]:=q[k]*(y1-y[k])/(r[k]*r[k]*r[k]);
SEx:=SEx+Ex[k];  SEy:=SEy+Ey[k];
if r[k]<min then min:=r[k];
end;
         E:=sqrt(sqr(SumEx)+sqr(SumEy));
if q[i]>=0 then begin x2:=x1+dl*SumEx/E; y2:=y1+dl*SumEy/E; end
else
begin x2:=x1-dl*SumEx/E; y2:=y1-dl*SumEy/E; end;
line(round(x1),round(y1),round(x2),round(y2));
         x1:=x2; y1:=y2;
until (x2<0) or (x2>640) or (y2<0) or (y2>480) or (min<dl*0.5);
   a:=a+10;
end;
end;
for i:=1 to n do
begin
if q[i]>=0 then setcolor(red) else setcolor(blue);
for j:=0 to 5 do
circle(x[i],y[i],j);
end;
repeat until keypressed;
closegraph;
end.

Категорія: Роботи учнів | Додав: Gonchar
Переглядів: 406 | Завантажень: 9 | Рейтинг: 5.0/2
Всього коментарів: 0
avatar

Copyright MyCorp © 2024
Конструктор сайтів - uCoz