1. Паскаль
1.1. Простая программа
Задание: написать программу для проверки умножения. Пользовательский ответ вводить с клавиатуры. Выдача сообщения о правильности ответа.
Текст программы:
Program an1;
uses crt;
var a, b,k, p:integer;
ch:char;
Begin
clrscr;
repeat
a:=10-random(10);
b:=10-random(20);
writeln(a,'*',b,'=?');
write('Введите свой ответ:');
readln(p);
k:=a*b;
if p=k then writeln('Вы дали верный ответ')
else writeln('Вы дали не верный ответ, ',a,'*',b,'=',k);
writeln;
writeln(' Для продолжения нажмите Enter');
writeln(' Для выхода нажмите Esc');
ch:=readkey;
until ch=#27;
End.
Результат выполнения программы:

1.2. Паскаль_Сложная программа
Задание: Вычислить интеграл функции f(x)=sin(x) методом Ньютона-Котеса.
Текст программы:
program n_kotes;
uses crt;
{вычисление подинтегральной функции}
function f(p:real):real;
begin
f:=sin(p);
end;
{процедура расчета y}
procedure funkcia(n:integer;a, b:real;var y:array of double;c:real);
var h, x:real;
i:integer;
begin
h:=(b-a)/n;
for i:=0 to n do
begin
x:=(a+h*i)/c;
y[i]:=f(x);
end;
end;
{процедура изменения коэффициентов для интеграла}
procedure koef(w:array of double;n:integer;var e:array of double);
var t:integer;
begin
for t:=1 to n do e[t]:=w[t]/(n-t+2);
end;
{процедура нахождения коэффициентов при q^n}
procedure mnogochlen(n, i:integer;var c:array of double);
var k, j:integer;
d:array[1..100] of double;
begin
d[1]:=1;
{цикл вычисления коэффициентов при q^n}
for j:=1 to n do
begin
d[j+1]:=d[j]*j*(-1);
if j>1 then
for k:=j downto 2 do d[k]:=d[k]+d[k-1]*j*(-1);
end;
c[1]:=d[1];
{цикл деления многочлена на (q-i) по схеме Герона}
for j:=1 to n+1 do c[j]:=i*c[j-1]+d[j];
{обращение к процедуре изменения коэффициентов при интегрировании}
koef(c, n,c);
end;
{функция вычисления факториала}
function facktorial(n:integer):double;
var t:integer;
s:double;
begin
s:=1;
if n=0 then s:=1
else
for t:=1 to n do s:=s*t;
facktorial:=s;
end;
{функция вычисления интеграла}
function integral(w:array of double;n:integer):double;
var t, p:integer;
s, c:double;
begin
s:=0;p:=n;
{цикл вычисления интеграла}
for t:=0 to p+1 do s:=s+w[t]*exp((p-t+2)*ln(p));
integral:=s;
end;
{процедура вычисления коэффициентов Ньютона-Котеса}
procedure hkoef(n:integer;var h:array of double);
var p, j,d, c,i:integer;
kq:array[0..20] of double;
s:array[0..20] of double;
begin
p:=n;
{вычисление половины от всех вычислений коэффициентов}
if (p mod 2)=1 then d:=round((p-1)*0.5)
else d:=round(0.5*p);
for i:=0 to n do
begin
mnogochlen(p, i,kq);
{формирование массива из интегралов}
s[i]:=integral(kq, p);
end;
for i:=0 to d do
begin
if ((p-i) mod 2) = 0 then c:=1
else c:=(-1);
h[i]:=(c*s[i])/(facktorial(i)*facktorial(p-i)*p);
h[p-i]:=h[i];
end;
end;
{функция вычисления основного интеграла}
function mainint(n:integer;a, b:real;y:array of double):double;
var sum:double;
p, i:integer;
kq, h:array[0..20] of double;
begin
p:=n;
hkoef(n, h);
sum:=0;
{цикл суммирования произведений y-ов на коэффициенты}
for i:=0 to p do sum:=sum+h[i]*y[i];
mainint:=sum*(b-a);
end;
const t=15;
var c:char;
a1,b1,a, b:real;
n1,v, r,n, i:integer;
h, y:array[0..t] of double;
int:double;
Begin
Clrscr;
write('Введите количество узлов (желательно не более 12): ');
readln(n);
write('Введите нижний предел интегрирования: ');
readln(a);
write('Введите верхний предел интегрирования: ');
readln(b);
{цикл обнуления массива}
for i:=0 to n do h[i]:=0;
{обнуление значения интеграла}
int:=0;
funkcia(n, a,b, y,1);
{обращение к функции вычисления интеграла}
int:=mainint(n, a,b, y);
hkoef(n, h);
writeln(' Значения функции Коэффициенты Ньютона-Котеса');
{цикл вывода на экран значений функции и коэффициентов Ньютона-Котеса}
for i:=0 to n do writeln('y',i,'=',y[i]:8:4,' при ','x',i,'=',(a+i*(b-a)/n):8:4,' h',i,'=',h[i]:9:6);
writeln;
writeln('Значение интеграла: ',abs(int):10:7);
writeln('Для выхода нажмите клавишу Enter');
{ожидание нажатия клавиши Enter для выхода}
readln;
End.
Результат выполнения программы:

2. Си++ Builder
2.1. Простая программа
Задание: организовать вычисление с помощью полосы прокрутки для различных n. Причем, предусмотреть вычисление как в цикле, так и по формуле, приведенной в правой части выражения: 12 + 32 + 52 +…+ (2n – 1)2 = n(4n2 – 1)/3.
Текст программы:
#include <vcl. h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
int n, i;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//процедура при нажатии кнопки "Вычислить"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float s1=0,s2=0;
//расчет сумммы в цикле
for(i=1;i<=2*n-1;i++){s1+=i*i; i++;}
//расчет суммы по формуле
s2=n*(4*n*n-1)/3;
//вывод результатов
Label3->Caption=FloatToStr(s1);
Label5->Caption=FloatToStr(s2);
}
//процедура при изменении положения полосы прокрутки
void __fastcall TForm1::ScrollBar1Change(TObject *Sender)
{
//чтение установленного значения n
n=ScrollBar1->Position;
//изменение значения n
Edit1->Text=IntToStr(n);
}
//процедура при создании формы
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//чтение установленного значения n
n=ScrollBar1->Position;
}
Результат выполнения программы:



