T: writeln('пределы интегрирования не соответствуют условию');
f6:=-9999999999.;
K1: end;
BEGIN
NAH: writeln('введите значения a,b');
readln(a,b); z:=f6(a,b);
if z=-9999999999. then goto p;
writeln('z=',z);
P: readln;
writeln(' будем еще вычислять z ? , если "да" ',
'то нажмите клавишу "y" , если нет, то любую клавишу ');
readln(lit);
if (lit='Y') or (lit='y') then goto NAH;
END.
7.3. Подпрограммы-процедуры
Описание процедуры:
Procedure имя (входные формальные параметры: тип;
Var выходные формальные параметры: тип);
описания (если они есть)
begin операторы
end;
Пусть необходимо найти корни квадратных уравнений
ax2+bx+c=0,
ky2+my+d=0,
sz2+tz+p=0,
где коэффициенты a, b, c вводятся по запросу. количество уравнений не ограничено. результаты вычислений выводить на экран (в основную программу не возвращать), см. рис. 2.1.
Program Prim33;
label K,NAH;
Var let:char; a,b,c:real;
procedure root(a,b,c:real); {процедура не имеет выходных параметров}
label K;
Var d,x1d,x1m,x2d,x2m:real;
Begin if a=0 then Begin
writeln('уравнение первой степени, корень один');
x1d:=-c/b; writeln('x=',x1d); goto K; end
else d:=b*b-4*a*c;
if d>=0 then Begin
writeln('уравнение второй степени, корни действительные');
x1d:=(-b-sqrt(d))/(2*a);
x2d:=(-b+sqrt(d))/(2*a);
writeln('x1d=',x1d,' x2d=',x2d); goto K; end
else writeln('уравнение второй степени, корни комплексные');
x1d:=-b/(2*a); x2d:=x1d;
x1m:=-sqrt(-d)/(2*a); x2m:=-x1m;
writeln('z1=',x1d,' ',x1m,' i;');
writeln('z2=',x2d,' ',x2m,' i;');
K: end;
BEGIN NAH: writeln('введите a,b,c'); readln(a,b,c); root(a,b,c);
writeln('будет еще уравнение? если "да", нажмите клавишу"Y"',
'если "нет", нажмите любую клавишу');
read(let);
if (let='Y') or (let='y') then goto nah else goto K;
K: END.
Найти x, y, z — корни системы уравнений:
Как известно из линейной алгебры ,
где
Раскрытие определителя
+
–
в процедуре a,b,c,d – входные данные, x,y,z – результаты.
Program Prim34;
label N,K;
Type w=array[1..3] of integer;
Var a,b,c,d:w; x,y,z:real; let:char;
function det(a:w;b:w;c:w):real;
Begin det:=a[1]*b[2]*c[3]+b[1]*c[2]*a[3]+c[1]*a[2]*b[3]
-c[1]*b[2]*a[3]-a[1]*c[2]*b[3]-b[1]*a[2]*c[3]; end;
procedure ur(a,b,c,d:w; Var x,y,z:real);
Var d0:real;
Begin d0:=det(a,b,c);
if d0=0 then Begin writeln('det=0 решения нет');
let:='0'; Exit; end else {EXIT – выход из процедуры}
x:=det(d,b,c)/d0;
y:=det(a,d,c)/d0;
z:=det(a,b,d)/d0; let:='1'; end;
BEGIN N: writeln('введите a1,b1,c1,d1'); readln(a[1],b[1],c[1],d[1]);
writeln('введите a2,b2,c2,d2'); readln(a[2],b[2],c[2],d[2]);
writeln('введите a3,b3,c3,d3'); readln(a[3],b[3],c[3],d[3]);
ur(a,b,c,d,x,y,z);
if let='0' then goto K else
writeln(' / ',a[1],'x+',b[1],'y+',c[1],'z=',d[1]);
writeln('система i ',a[2],'x+',b[2],'y+',c[2],'z=',d[2]);
writeln(' \ ',a[3],'x+',b[3],'y+',c[3],'z=',d[3]);
writeln('имеет решение: x=',x,' y=',y,' z=',z);
K: writeln('Будет ещё ур-е? да - "Y" , нет – любая клавиша ');
if (let='Y') or (let='y') then goto N;
Имеется одномерный массив. Необходимо определить сумму положительных элементов, номер последнего отрицательного элемента, количество отрицательных элементов массива.
Задача 1. Массив один и состоит из 7 элементов.
Задача 2. Массивов два, размерность первого – 7 элементов, второго – 5.
Задача 3. Количество массивов не ограничено, количество элементов в массивах произвольное, но не более 70.
Program Prim35; { массив 1 и состоит из 7 элементов } label j; Type mas=array[1..7] of real; Var n,k,i,no:integer;
a:mas;
s:real; ch:char;
procedure prmas(a:mas;n:integer; Var s:real; Var k,no:integer);
Var i:integer;
Begin s:=0; k:=0; no:=0;
for i:=1 to n do Begin
if a[i]>=0 then s:=s+a[i] else Begin k:=i; no:=no+1;
end; end; end;
for i:=1 to 7 do Begin
writeln('ввести значение a[',i,']');
readln(a[i]); end;
prmas(a,7,s,k,no);
j: writeln('сумма положительных элементов =',s);
writeln('последний отрицательный элемент имеет N=' no);
writeln('количество отрицательных элементов =', k);
readln;
Program Prim36; { массива 2, размерность первого массива 7, второго – 5} label j; Type mas=array[1..7] of real; Var k,no,y:integer; s:real; ch:char; procedure prmas(n:integer; var s:real; var k,no:integer);
Var i:integer; a:mas;
Begin for i:=1 to n do Begin
writeln('введите ',i,' значение элемента массива');
s:=0; k:=0; no:=0;
for i:=1 to n do begin
if a[i]>=0 then s:=s+a[i] else begin k:=i; no:=no+1;
BEGIN prmas(7,s,k,no); y:=0;
writeln('последний отрицательный элемент имеет N=', no);
writeln('количество отрицательных элементов =', k); y:=y+1;
if y=1 then Begin prmas(5,s,k,no); goto j; end
else readln;
Program Prim37; { массивы с переменными измерениями, количество массивов не ограничено} Type mas=array[1..70] of real; Var n,k,i,no,kol,r,j:integer; a,b:mas; s:real; ch:char; procedure prmas(n:integer; var s:real; var k,no:integer); var i:integer; a:mas;
begin for i:=1 to n do begin
writeln('введите ',i,' значение элемента массива ', j);
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26