2.3. Подпрограммы-процедурыОписание процедуры: Procedure имя (входные формальные параметры: тип; Var выходные формальные параметры: тип); описания (если они есть) begin операторы end; Пусть необходимо найти корни квадратных уравнений ax2+bx+c=0, ky2+my+d=0, sz2+tz+p=0, где коэффициенты a, b, c вводятся по запросу. количество уравнений не ограничено. результаты вычислений выводить на экран (в основную программу не возвращать) Program Prim33; label K,NAH; Var procedure root(a,b,c:real); {процедура не имеет выходных параметров} label K; Var d,x1d,x1m,x2d,x2m:real; Begin writeln('уравнение первой степени, корень один'); x1d:=-c/b; else if d>=0 then writeln('уравнение второй степени, корни действительные'); x1d:=(-b-sqrt(d))/(2*a); x2d:=(-b+sqrt(d))/(2*a); writeln('x1d=',x1d,' x2d=',x2d); else writeln('уравнение второй степени, корни комплексные'); x1d:=-b/(2*a); x2d:=x1d; x1m:=-sqrt(-d)/(2*a); writeln('z1=',x1d,' ',x1m,' i;'); writeln('z2=',x2d,' ',x2m,' i;'); K: end; BEGIN writeln('будет еще уравнение? если "да", нажмите клавишу"Y"', 'если "нет", нажмите любую клавишу'); read(let); if (let='Y') or (let='y') then K: END. Найти x, y, z -- корни системы уравнений: Как известно из линейной алгебры , где Раскрытие определителя производится по схеме: т.е. в процедуре a,b,c,d - входные данные, x,y,z - результаты. Program Prim34; label N,K; Type Var function det(a:w;b:w;c:w):real; Begin -c[1]*b[2]*a[3]-a[1]*c[2]*b[3]-b[1]*a[2]*c[3]; procedure ur(a,b,c,d:w; Var x,y,z:real); Var Begin if d0=0 then let:='0'; x:=det(d,b,c)/d0; y:=det(a,d,c)/d0; z:=det(a,b,d)/d0; BEGIN writeln('введите a2,b2,c2,d2'); writeln('введите a3,b3,c3,d3'); ur(a,b,c,d,x,y,z); if let='0' then 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" , нет - любая клавиша '); read(let); if (let='Y') or (let='y') then END. Имеется одномерный массив. Необходимо определить сумму положительных элементов, номер последнего отрицательного элемента, количество отрицательных элементов массива. Задача 1. Массив один и состоит из 7 элементов. Задача 2. Массивов два, размерность первого - 7 элементов, второго - 5. Задача 3. Количество массивов не ограничено, количество элементов в массивах произвольное, но не более 70. Program Prim35; { массив 1 и состоит из 7 <элементов} 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 if a[i]>=0 then end; end; end; BEGIN for i:=1 to 7 do writeln('ввести значение a[',i,']'); readln(a[i]); end; prmas(a,7,s,k,no); j: writeln('сумма положительных элементов =',s); writeln('последний отрицательный элемент имеет N=' no); writeln('количество отрицательных элементов =', k); readln; END. Program Prim36; {массива 2, размерность первого массива 7, второго - 5} Var Begin writeln('введите ',i,' значение элемента массива'); readln(a[i]); s:=0; for i:=1 to n do if a[i]>=0 then end; end; end; BEGIN j: writeln('сумма положительных элементов =',s); writeln('последний отрицательный элемент имеет N=', no); writeln('количество отрицательных элементов =', k); if y=1 then else END. Program Prim37; {массивы с переменнымиизмерениями, количество массивов не ограничено} begin writeln('введите ',i,' значение элемента массива ', j); readln(a[i]); s:=0; for i:=1 to n do if a[i]>=0 then s:=s+a[i] else Begin k:=i; no:=no+1; end; end; end; BEGIN writeln('задайте количество массивов'); for j:=1 to kol do writeln(' задайте размерность массива', j); prmas(r,s,k,no); writeln(' сумма положительных элементов =',s); writeln(' последний отрицательный элемент имеет N=', no); writeln(' количество отрицательных элементов =', k); end; readln; END. |