Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.
Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.
Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.
Да, как говорится - проснулись, девушка! Задачки-то в 5 минут не делаются, работы много. К тому же сформулировано (как, впрочем, всегда в методичках) - бестолково. Например, вопросы по 1 задаче:Прошу помощи! Нужно написать две слишком сложные для меня программы в Pascal. Суть в приложенном файле! Буду рада любой помощи! Сессия близко!
Владимир, Вы не поверите, но при виде моей методички по программированию у меня возникает такой же вопрос.почему составление методичек поручают исключительно идиотам?
Ну вот, первая (черт, весь день с этой ерундой провозился):Нужно написать две слишком сложные для меня программы в Pascal.
Uses CRT;
Const
Xc=32.0;
Yc=-40.0;
Xe=-21.0;
Ye=40.0;
R=33.0;
Ae=16.0;
Be=38.0;
Var
X0c,Y0c,X0e,Y0e,X1,Y1,X2,Y2,X3,Y3,Step:Real;
i,Nt,k:Byte;
N:Word;
Rect,Trap,Simp:Array[1..100] of Real;
Np:Array[1..100] of Word;
Function Ysl(Xsl:Real):Real;
begin
Ysl:=Y1+(Xsl-X1)/(X2-X1)*(Y2-Y1);
end;
Function Ycr1(Xcr:Real):Real;
begin
Ycr1:=Y0c+Sqrt(Sqr(R)-Sqr(Xcr-X0c));
end;
Function Ycr2(Xcr:Real):Real;
begin
Ycr2:=Y0c-Sqrt(Sqr(R)-Sqr(Xcr-X0c));
end;
Function Yel(Xel:Real):Real;
begin
Yel:=Y0e-Be*Sqrt(1-Sqr((Xel-X0e)/Ae));
end;
Function F1(Xf:Real):Real;
begin
F1:=Ycr1(Xf)-Ysl(Xf);
end;
Function F2(Xf:Real):Real;
begin
F2:=Yel(Xf)-Ycr2(Xf);
end;
Function F3(Xf:Real):Real;
begin
F3:=Ysl(Xf)-Ycr2(Xf);
end;
Function Rectangle1:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F1(a+h*i);
Rectangle1:=Sum;
end;
Function Rectangle2:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X2;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F2(a+h*i);
Rectangle2:=Sum;
end;
Function Rectangle3:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X2;
b:=X3;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F3(a+h*i);
Rectangle3:=Sum;
end;
Function Trapezium1:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
h:=(b-a)/N;
Sum:=(F1(a)+F1(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F1(a+h*i);
Trapezium1:=Sum;
end;
Function Trapezium2:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X2;
h:=(b-a)/N;
Sum:=(F2(a)+F2(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F2(a+h*i);
Trapezium2:=Sum;
end;
Function Trapezium3:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X2;
b:=X3;
h:=(b-a)/N;
Sum:=(F3(a)+F3(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F3(a+h*i);
Trapezium3:=Sum;
end;
Function Simpson1:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F1(a)+F1(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F1(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F1(a+h*(2*i-2));
Simpson1:=Sum;
end;
Function Simpson2:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X2;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F2(a)+F2(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F2(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F2(a+h*(2*i-2));
Simpson2:=Sum;
end;
Function Simpson3:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=X2;
b:=X3;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F3(a)+F3(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F3(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F3(a+h*(2*i-2));
Simpson3:=Sum;
end;
BEGIN
ClrScr;
X0c:=-1.0;
Y0c:=Yc+Sqrt(sqr(R)-sqr(X0c));
Y0e:=2.0;
X0e:=Xe+Ae*Sqrt(1.0-sqr(Y0e/Be));
Writeln('X0c=',X0c:9:5,' - X координата центра окружности');
Writeln('Y0c=',Y0c:9:5,' - Y координата центра окружности');
Writeln('X0e=',X0e:9:5,' - X координата центра эллипса');
Writeln('Y0e=',Y0e:9:5,' - Y координата центра эллипса');
Writeln;
Step:=1;
X1:=X0e-Ae;
For i:=1 to 5 do
begin
Step:=Step/10;
Repeat
X1:=X1+Step;
Y1:=Y0e+Be*Sqrt(1-sqr((X1-X0e)/Ae));
Until Sqr(X1-X0c)+Sqr(Y1-Y0c)>Sqr(R);
X1:=X1-Step;
end;
Y1:=Y0e+Be*Sqrt(1-sqr((X1-X0e)/Ae));
Writeln('X1= ',X1:9:5,' - X координата первой точки пересечения');
Writeln('Y1= ',Y1:9:5,' - Y координата первой точки пересечения');
Y2:=0;
X2:=X0e+Ae*Sqrt(1-sqr(Y0e/Be));
Writeln('X2= ',X2:9:5,' - X координата второй точки пересечения');
Writeln('Y2= ',Y2:9:5,' - Y координата второй точки пересечения');
Step:=1;
X3:=X2;
For i:=1 to 5 do
begin
Step:=Step/10;
Repeat
X3:=X3+Step;
Y3:=Ysl(X3);
Until Sqr(X3-X0c)+Sqr(Y3-Y0c)>Sqr(R);
X3:=X3-Step;
end;
Y3:=Ysl(X3);
Writeln('X3= ',X3:9:5,' - X координата третьей точки пересечения');
Writeln('Y3= ',Y3:9:5,' - Y координата третьей точки пересечения');
Writeln;
Writeln('Нажмите "Enter" для продолжения...');
Readln;
ClrScr;
k:=0;
Repeat
Write('Введите количество точек (0 для выхода из программы) ');
Readln(N);
If N>0 then
Begin
ClrScr;
Inc(k);
Np[k]:=N;
For i:=1 to 58 do Write('-');
Writeln;
Writeln('| Число разбиений | Результат |');
Writeln('| |--------------------------------------|');
Writeln('| n | A | B | C |');
For i:=1 to 58 do Write('-');
Writeln;
Rect[k]:=Rectangle1+Rectangle2+Rectangle3;
Trap[k]:=Trapezium1+Trapezium2+Trapezium3;
Simp[k]:=Simpson1+Simpson2+Simpson3;
For i:=1 to k do
Writeln('| ',Np[i]:4,' |',Rect[i]:12:6,'|',Trap[i]:12:6,'|',Simp[i]:12:6,'|');
For i:=1 to 58 do Write('-');
Writeln;
End;
Until N=0;
END.
Миша, а зачем о них думать? Нужно как на аватарке!Что думать о других педагогах?
Vladimir_S, Вы просто гений! Спасибо огромноееееее! Склоняю свою глупую голову перед Вашим мастерством!Ну вот, первая (черт, весь день с этой ерундой провозился):
Uses CRT;
Const
M=20;
N=10;
Vow=['A','E','I','O','U','Y'];
VAR
W:Array[1..M,1..N] of String;
i,j,k,N2v,q:Integer;
Lng:Array[1..M,1..N] of Byte;
C:Set of Byte;
b:Boolean;
BEGIN
C:=[];
Randomize;
ClrScr;
TextColor(7);
Writeln('Initial Array:');
Writeln;
For i:=1 to M do
Begin
For j:=1 to N do
begin
Lng[i,j]:=2+Random(5);
W[i,j]:='';
For k:=1 to Lng[i,j] do
W[i,j]:=W[i,j]+Chr(65+Random(26));
Write(W[i,j]:7);
end;
Writeln;
End;
Writeln('Press "Enter" to continue...');
Readln;
ClrScr;
N2v:=0;
Writeln('Words containing 2 vowels are red:');
For i:=1 to M do
Begin
For j:=1 to N do
begin
q:=0;
For k:=1 to Lng[i,j] do
If W[i,j][k] in Vow then Inc(q);
If q=2 then
begin
Inc(N2v);
textcolor(12);
Write(W[i,j]:7);
end
else
begin
textcolor(7);
Write(W[i,j]:7);
end;
end;
Writeln;
End;
Textcolor(7);
Writeln(N2v,' words');
Writeln('Press "Enter" to continue...');
Readln;
ClrScr;
N2v:=0;
Writeln('Words in columns containing at least 1 word finishing with vowel (blue):');
For j:=1 to N do
begin
b:=false;
i:=0;
Repeat
Inc(i);
If W[i,j][Lng[i,j]] in Vow then b:=true;
Until b or (i=M);
If b then C:=C+[j];
end;
For i:=1 to M do
Begin
For j:=1 to N do
begin
If j in C then
begin
Inc(N2v);
textcolor(1);
Write(W[i,j]:7);
end
else
begin
textcolor(7);
Write(W[i,j]:7);
end;
end;
Writeln;
End;
Textcolor(7);
Writeln(N2v,' words');
Readln;
End.
:tehnari_ru_288:Второе задание (тут возможно потребуется правка; подробно - после листинга):
Сочиняю трактат, подождите. Надеюсь, впрочем, что со второй задачкой разберетесь - там всё просто.Vladimir_S,
Я, видимо, совсем не разбираюсь в Паскале, третий день изучаю код программ, которые Вы мне написали. Я Вам очень благодарна, но если Вас не очень сильно затруднит, не могли бы Вы дать краткие комментарии к программам. А то я даже не знаю, за что схватиться в первую очередь, чтобы разобраться.:tehnari_ru_121:
Охо-хо, вспоминать надо, уже подзабыл. Ну ладно.Vladimir_S,
Я, видимо, совсем не разбираюсь в Паскале, третий день изучаю код программ, которые Вы мне написали. Я Вам очень благодарна, но если Вас не очень сильно затруднит, не могли бы Вы дать краткие комментарии к программам. А то я даже не знаю, за что схватиться в первую очередь, чтобы разобраться.:tehnari_ru_121:

Спасибо, ситуация начинает проясняться.Охо-хо, вспоминать надо, уже подзабыл. Ну ладно.
Посмотрел. Программу не запускал, но вроде, на взгляд, всё правильно. Вот только...Но в связи с этими пояснениями у меня закрались сомнения в правильности написания мной еще одной работы.
Uses CRT;
Const
Xc=37.0;
Yc=-39.0;
Xe=-43.0;
Ye=30.66;
R=35.0;
Ae=35.0;
Be=25.0;
Var
X0c,Y0c,X0e,Y0e,X1,Y1,X2,Y2,X3,Y3,Step:Real;
i,Nt,k:Byte;
N:Word;
Rect,Trap,Simp:Array[1..100] of Real;
Np:Array[1..100] of Word;
Function Ysl(Xsl:Real):Real;
begin
Ysl:=Y1+(Xsl-X1)/(X2-X1)*(Y2-Y1);
end;
Function Ycr1(Xcr:Real):Real;
begin
Ycr1:=Y0c+Sqrt(Sqr(R)-Sqr(Xcr-X0c));
end;
Function Ycr2(Xcr:Real):Real;
begin
Ycr2:=Y0c-Sqrt(Sqr(R)-Sqr(Xcr-X0c));
end;
Function Yel(Xel:Real):Real;
begin
Yel:=Y0e-Be*Sqrt(1-Sqr((Xel-X0e)/Ae));
end;
Function F1(Xf:Real):Real;
begin
F1:=Ycr1(Xf)-Ysl(Xf);
end;
Function F2(Xf:Real):Real;
begin
F2:=Yel(Xf)-Ycr2(Xf);
end;
Function F3(Xf:Real):Real;
begin
F3:=Ysl(Xf)-Ycr2(Xf);
end;
Function Rectangle1:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F1(a+h*i);
Rectangle1:=Sum;
end;
Function Rectangle2:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X2;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F2(a+h*i);
Rectangle2:=Sum;
end;
Function Rectangle3:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X2;
b:=X3;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F3(a+h*i);
Rectangle3:=Sum;
end;
Function Trapezium1:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
h:=(b-a)/N;
Sum:=(F1(a)+F1(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F1(a+h*i);
Trapezium1:=Sum;
end;
Function Trapezium2:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X2;
h:=(b-a)/N;
Sum:=(F2(a)+F2(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F2(a+h*i);
Trapezium2:=Sum;
end;
Function Trapezium3:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X2;
b:=X3;
h:=(b-a)/N;
Sum:=(F3(a)+F3(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F3(a+h*i);
Trapezium3:=Sum;
end;
Function Simpson1:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F1(a)+F1(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F1(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F1(a+h*(2*i-2));
Simpson1:=Sum;
end;
Function Simpson2:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X2;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F2(a)+F2(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F2(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F2(a+h*(2*i-2));
Simpson2:=Sum;
end;
Function Simpson3:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=X2;
b:=X3;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F3(a)+F3(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F3(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F3(a+h*(2*i-2));
Simpson3:=Sum;
end;
BEGIN
ClrScr;
X0c:=2.0;
Y0c:=Yc+Sqrt(sqr(R)-sqr(X0c));
Y0e:=-5.66;
X0e:=-8;
Writeln('X0c=',X0c:9:5,' - X Є®®а¤Ё**в* жҐ*ва* ®Єаг¦*®бвЁ');
Writeln('Y0c=',Y0c:9:5,' - Y Є®®а¤Ё**в* жҐ*ва* ®Єаг¦*®бвЁ');
Writeln('X0e=',X0e:9:5,' - X Є®®а¤Ё**в* жҐ*ва* н««ЁЇб*');
Writeln('Y0e=',Y0e:9:5,' - Y Є®®а¤Ё**в* жҐ*ва* н««ЁЇб*');
Writeln;
Step:=1;
X1:=X0e-Ae;
For i:=1 to 5 do
begin
Step:=Step/10;
Repeat
X1:=X1+Step;
Y1:=Y0e+Be*Sqrt(1-sqr((X1-X0e)/Ae));
Until Sqr(X1-X0c)+Sqr(Y1-Y0c)>Sqr(R);
X1:=X1-Step;
end;
Y1:=Y0e+Be*Sqrt(1-sqr((X1-X0e)/Ae));
Writeln('X1= ',X1:9:5,' - X Є®®а¤Ё**в* ЇҐаў®© в®зЄЁ ЇҐаҐбҐзҐ*Ёпя');
Writeln('Y1= ',Y1:9:5,' - Y Є®®а¤Ё**в* ЇҐаў®© в®зЄЁ ЇҐаҐбҐзҐ*Ёпя');
Y2:=0;
X2:=X0e+Ae*Sqrt(1-sqr(Y0e/Be));
Writeln('X2= ',X2:9:5,' - X Є®®а¤Ё**в* ўв®а®© в®зЄЁ ЇҐаҐбҐзҐ*Ёпя');
Writeln('Y2= ',Y2:9:5,' - Y Є®®а¤Ё**в* ўв®а®© в®зЄЁ ЇҐаҐбҐзҐ*Ёпя');
Step:=1;
X3:=X2;
For i:=1 to 5 do
begin
Step:=Step/10;
Repeat
X3:=X3+Step;
Y3:=Ysl(X3);
Until Sqr(X3-X0c)+Sqr(Y3-Y0c)>Sqr(R);
X3:=X3-Step;
end;
Y3:=Ysl(X3);
Writeln('X3= ',X3:9:5,' - X Є®®а¤Ё**в* ваҐв쥩 в®зЄЁ ЇҐаҐбҐзҐ*Ёпя');
Writeln('Y3= ',Y3:9:5,' - Y Є®®а¤Ё**в* ваҐв쥩 в®зЄЁ ЇҐаҐбҐзҐ*Ёпя');
Writeln;
Writeln('НЌ*¦¬ЁвҐ "Enter" ¤«п Їа®¤®«¦Ґ*Ёп...');
Readln;
ClrScr;
k:=0;
Repeat
Write('‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® в®зҐЄ (0 ¤«п ўл室* Ё§ Їа®Ја*¬¬л) ');
Readln(N);
If N>0 then
Begin
ClrScr;
Inc(k);
Np[k]:=N;
For i:=1 to 58 do Write('-');
Writeln;
Writeln('| —Ёб«® а*§ЎЁҐ*Ё© | ђҐ§г«мв*в |');
Writeln('| |--------------------------------------|');
Writeln('| n | A | B | C |');
For i:=1 to 58 do Write('-');
Writeln;
Rect[k]:=Rectangle1+Rectangle2+Rectangle3;
Trap[k]:=Trapezium1+Trapezium2+Trapezium3;
Simp[k]:=Simpson1+Simpson2+Simpson3;
For i:=1 to k do
Writeln('| ',Np[i]:4,' |',Rect[i]:12:6,'|',Trap[i]:12:6,'|',Simp[i]:12:6,'|');
For i:=1 to 58 do Write('-');
Writeln;
End;
Until N=0;
END.
Хорошо, я адаптировал программу к вашему рисунку. Только вот не знаю, есть ли в том прок. Видите ли, задача очень не простая, и сомневаюсь, что Вы сумеете разобраться. Тем более, что эта задача уже такого класса, что тут проще написать программу самому, чем разбираться в чужой. Но попробуйте.Помогите пожалуйста...
Uses CRT;
Const
R=35.0;
Ae=35.0;
Be=25.0;
Var
X0c,Y0c,X0e,Y0e,X1,Y1,X2,Y2,X3,Y3,Step:Real;
i,Nt,k:Byte;
N:Word;
Rect,Trap,Simp:Array[1..100] of Real;
Np:Array[1..100] of Word;
Function Ysl(Xsl:Real):Real;
begin
Ysl:=Y1+(Xsl-X1)/(X2-X1)*(Y2-Y1);
end;
Function Ycr(Xcr:Real):Real;
begin
Ycr:=Y0c-Sqrt(Sqr(R)-Sqr(Xcr-X0c));
end;
Function Yel(Xel:Real):Real;
begin
Yel:=Y0e-Be*Sqrt(1-Sqr((Xel-X0e)/Ae));
end;
Function F1(Xf:Real):Real;
begin
F1:=-Ycr(Xf);
end;
Function F2(Xf:Real):Real;
begin
F2:=-Ysl(Xf);
end;
Function F3(Xf:Real):Real;
begin
F3:=Yel(Xf)-Ycr(Xf);
end;
Function F4(Xf:Real):Real;
begin
F4:=Ysl(Xf)-Ycr(Xf);
end;
Function Rectangle1:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X0c-Sqrt(sqr(R)-sqr(Y0c));
b:=X1;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F1(a+h*i);
Rectangle1:=Sum;
end;
Function Rectangle2:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F2(a+h*i);
Rectangle2:=Sum;
end;
Function Rectangle3:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X3;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F3(a+h*i);
Rectangle3:=Sum;
end;
Function Rectangle4:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X3;
b:=X2;
h:=(b-a)/N;
Sum:=0;
for i:=0 to N-1 do
Sum:=Sum+h*F4(a+h*i);
Rectangle4:=Sum;
end;
Function Trapezium1:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X0c-Sqrt(sqr(R)-sqr(Y0c));
b:=X1;
h:=(b-a)/N;
Sum:=(F1(a)+F1(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F1(a+h*i);
Trapezium1:=Sum;
end;
Function Trapezium2:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
h:=(b-a)/N;
Sum:=(F2(a)+F2(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F2(a+h*i);
Trapezium2:=Sum;
end;
Function Trapezium3:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X3;
h:=(b-a)/N;
Sum:=(F3(a)+F3(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F3(a+h*i);
Trapezium3:=Sum;
end;
Function Trapezium4:Real;
var
i:Integer;
Sum,h,a,b:Real;
begin
a:=X3;
b:=X2;
h:=(b-a)/N;
Sum:=(F4(a)+F4(b))/2*h;
for i:=1 to N-1 do
Sum:=Sum+h*F4(a+h*i);
Trapezium4:=Sum;
end;
Function Simpson1:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=X0c-Sqrt(sqr(R)-sqr(Y0c));
b:=X1;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F1(a)+F1(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F1(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F1(a+h*(2*i-2));
Simpson1:=Sum;
end;
Function Simpson2:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=X1;
b:=0;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F2(a)+F2(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F2(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F2(a+h*(2*i-2));
Simpson2:=Sum;
end;
Function Simpson3:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=0;
b:=X3;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F3(a)+F3(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F3(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F3(a+h*(2*i-2));
Simpson3:=Sum;
end;
Function Simpson4:Real;
var
i,Ns:Integer;
Sum,h,a,b:Real;
begin
a:=X3;
b:=X2;
Ns:=N div 2;
h:=(b-a)/(2*Ns);
Sum:=(F4(a)+F4(b))/3*h;
for i:=1 to Ns do
Sum:=Sum+4.0*h/3.0*F4(a+h*(2*i-1));
for i:=2 to Ns do
Sum:=Sum+2.0*h/3.0*F4(a+h*(2*i-2));
Simpson4:=Sum;
end;
BEGIN
ClrScr;
X0c:=2.0;
Y0c:=-39+Sqrt(sqr(R)-sqr(X0c));
X0e:=-8.0;
Y0e:=-30+Be*Sqrt(1.0-sqr(X0e/Ae));
Writeln('X0c=',X0c:9:5,' - X circle center coordinate');
Writeln('Y0c=',Y0c:9:5,' - Y circle center coordinate');
Writeln('X0e=',X0e:9:5,' - X ellipse center coordinate');
Writeln('Y0e=',Y0e:9:5,' - Y ellipse center coordinate');
Writeln;
Step:=-1;
X1:=0;
For i:=1 to 5 do
begin
Step:=Step/10;
Repeat
X1:=X1+Step;
Y1:=Y0e-Be*Sqrt(1-sqr((X1-X0e)/Ae));
Until Sqr(X1-X0c)+Sqr(Y1-Y0c)>Sqr(R);
X1:=X1-Step;
end;
Y1:=Y0e-Be*Sqrt(1-sqr((X1-X0e)/Ae));
Writeln('X1= ',X1:9:5,' - X first crossing point coordinate');
Writeln('Y1= ',Y1:9:5,' - Y first crossing point coordinate');
Y2:=0;
X2:=X0c+Sqrt(sqr(R)-sqr(Y0c));
Writeln('X2= ',X2:9:5,' - X second crossing point coordinate');
Writeln('Y2= ',Y2:9:5,' - Y second crossing point coordinate');
Step:=1;
X3:=0;
For i:=1 to 5 do
begin
Step:=Step/10;
Repeat
X3:=X3+Step;
Y3:=Ysl(X3);
Until Sqr((X3-X0e)/Ae)+Sqr((Y3-Y0e)/Be)>1;
X3:=X3-Step;
end;
Y3:=Ysl(X3);
Writeln('X3= ',X3:9:5,' - X third crossing point coordinate');
Writeln('Y3= ',Y3:9:5,' - Y third crossing point coordinate');
Writeln;
Writeln('Press "Enter" to continue...');
Readln;
ClrScr;
k:=0;
Repeat
Write('Enter the number of points (0 to exit the program) ');
Readln(N);
If N>0 then
Begin
ClrScr;
Inc(k);
Np[k]:=N;
For i:=1 to 58 do Write('-');
Writeln;
Writeln('| Number of points| Result |');
Writeln('| |--------------------------------------|');
Writeln('| n | A | B | C |');
For i:=1 to 58 do Write('-');
Writeln;
Rect[k]:=Rectangle1+Rectangle2+Rectangle3+Rectangle4;
Trap[k]:=Trapezium1+Trapezium2+Trapezium3+Trapezium4;
Simp[k]:=Simpson1+Simpson2+Simpson3+Simpson4;
For i:=1 to k do
Writeln('| ',Np[i]:4,' |',Rect[i]:12:6,'|',Trap[i]:12:6,'|',Simp[i]:12:6,'|');
For i:=1 to 58 do Write('-');
Writeln;
End;
Until N=0;
END.