Консультация № 110306
20.11.2007, 17:49
0.00 руб.
0 1 1
Здруствуйте! помогите пожалуйста решить задачи:
1)Вычислите большие корни квадратных уравнений х^2 +ах+b=0, cy^2-dy-f=0. Все корни действительны. Значение большего корнгя вычислить при помощи процедуры-функции.
2)Вычислить z=( s1+s2 )/(k1k2), где s1 і k1 – сумма и количество положительных елементов массива x(N); s2 і k2 - сумма и количество положительных елементов массива y(М), М< 100, N< 100. Суммы и количество вычислять в процедуре.

Обсуждение

Неизвестный
20.11.2007, 18:28
общий
это ответ
Здравствуйте, Батурин Александр Викторович!
Задачи несложные, так что особо объяснять нечего. Смотрите решение в приложении, там есть комментарии. Будут вопросы по коду - обращайтесь.
Удачи!

Приложение:
{Задача 1}Var a, b, c, d, f: real;f: boolean;maxx: real;procedure Roots (a, b, c: real; var maxx: real; var f: boolean);{процедура нахождения максимального корня уравнения}Var d, x1, x2: real;begin f:= true; {флаг означает, есть ли в уравнении действительные корни} maxx:= 0; d:= sqr(b)-4*a*c; {дискриминант} if d<0 then f:= false {корней нет} else if d=0 then maxx:= (-1*b)/(2*a) {корень один} else begin {корня два - выбираем максимальный} x1:= (-1*b-sqrt(d))/(2*a); x2:= (-1*b+sqrt*(d))/(2*a); if x1>x2 then maxx:= x1 else maxx:= x2; end;end;begin readln (a, b, c, d, f); {считываем входные данные} Roots (1, a, b, maxx, f); {вызываем процедуру} writeln (‘Bolshii koren uravnenia x^2+‘, a, ‘x+‘, b, ‘=0‘); if not f then writeln (‘Kornei net‘) {если корней нет - говорим} else writeln (maxx); {иначе выводим максимальный} Roots (c, -1*d, -1*f, maxx, f); {вызываем процедуру для втоого уравнения} writeln (‘Bolshii koren uravnenia ‘, c, ‘y^2-‘, d, ‘y-‘, f, ‘=0‘); if not f then writeln (‘Kornei net‘) else writeln (maxx);end.{Задача 2}Type mas = array [1..100] of integer; {объявляем тип для передачи параметра в процедуру}Var x, y: mas; m, n, i, s1, s2, k1, k2: integer;z: real;procedure Pol (var a: mas; var k: integer; var s: integer, n: integer);{процедура нахождения количества и суммы положительных}Var i: integer;begin s:=0; k:=0; {обнуляем счётчик и сумму} for i:=1 to n do if a[i]>0 then begin inc (k); s:=s+a[i]; end; {если больше нуля - считаем}end;begin readln (n); {вводим данные} for i:=1 to n do readln (x[i]); Pol (x, k1, s1, n); {вызываем функцию} readln (m); for i:=1 to m do readln (y[i]); Pol (y, k2, s2, m); {вызываем функцию для второго массива} z:= (s1+s2)/(k1*k2); {вычисляем значение} writeln (z); end.
Форма ответа