Procedure WriteDMS(r: real); var dd, s: real; d, m: integer;
begin dd := 180 * r / Pi; d := Trunc(dd); dd := 60 * (dd - d); m := Trunc(dd); s := 60 * (dd - m); Writeln('=', d, ' град ', m, ' мин ', s:0:2, ' сек') end;
var a, b, c, dd: real;
begin Write('Введите через пробел стороны треугольника a,b,c: '); Readln(a, b, c); Writeln('Значения углов треугольника'); Write('А'); dd := ArcCos((sqr(b) + sqr(c) - sqr(a)) / (2 * b * c)); WriteDMS(dd); Write('B'); dd := ArcCos((sqr(a) + sqr(c) - sqr(b)) / (2 * a * c)); WriteDMS(dd); Write('C'); dd := ArcCos((sqr(a) + sqr(b) - sqr(c)) / (2 * a * b)); WriteDMS(dd); end.
Тестовое решение: Введите через пробел стороны треугольника a,b,c: 5.8 3.2 4.9 Значения углов треугольника А=88 град 53 мин 7.58 сек B=33 град 28 мин 41.54 сек C=57 град 38 мин 10.88 сек
1 DIM A(10, 5) RANDOMIZE TIMER FOR I = 1 TO 10 FOR J = 1 TO 5 A(I, J) = INT(RND * 10) PRINT A(I, J); S = S + A(I, J) ^ 2 NEXT J PRINT , S NEXT I
Исправленный вариант (предыдущий находил только суммы квадратов элементов). Уменьшил размерность массива и значение элементов, что бы через-чур большие числа не появлялись DIM A(3, 3) RANDOMIZE TIMER P = 1 FOR I = 1 TO 3 FOR J = 1 TO 3 A(I, J) = INT(RND * 5) PRINT A(I, J); S = S + A(I, J) ^ 2 NEXT J P = P * S PRINT NEXT I PRINT PRINT "P="; P
2 DIM A(10) RANDOMIZE TIMER P = 1 FOR I = 1 TO 10 A(I) = INT(RND * 20) - 10 PRINT A(I); " "; IF A(I) > O THEN S = S + A(I) P = P * A(I) N = N + 1 END IF NEXT I PRINT PRINT "S="; SPRINT "P="; PPRINT "Kol-vo="; N
var
dd, s: real;
d, m: integer;
begin
dd := 180 * r / Pi;
d := Trunc(dd);
dd := 60 * (dd - d);
m := Trunc(dd);
s := 60 * (dd - m);
Writeln('=', d, ' град ', m, ' мин ', s:0:2, ' сек')
end;
var
a, b, c, dd: real;
begin
Write('Введите через пробел стороны треугольника a,b,c: ');
Readln(a, b, c);
Writeln('Значения углов треугольника');
Write('А');
dd := ArcCos((sqr(b) + sqr(c) - sqr(a)) / (2 * b * c));
WriteDMS(dd);
Write('B');
dd := ArcCos((sqr(a) + sqr(c) - sqr(b)) / (2 * a * c));
WriteDMS(dd);
Write('C');
dd := ArcCos((sqr(a) + sqr(b) - sqr(c)) / (2 * a * b));
WriteDMS(dd);
end.
Тестовое решение:
Введите через пробел стороны треугольника a,b,c: 5.8 3.2 4.9
Значения углов треугольника
А=88 град 53 мин 7.58 сек
B=33 град 28 мин 41.54 сек
C=57 град 38 мин 10.88 сек
DIM A(10, 5)
RANDOMIZE TIMER
FOR I = 1 TO 10
FOR J = 1 TO 5
A(I, J) = INT(RND * 10)
PRINT A(I, J);
S = S + A(I, J) ^ 2
NEXT J
PRINT , S
NEXT I
Исправленный вариант (предыдущий находил только суммы квадратов элементов). Уменьшил размерность массива и значение элементов, что бы через-чур большие числа не появлялись
DIM A(3, 3)
RANDOMIZE TIMER
P = 1
FOR I = 1 TO 3
FOR J = 1 TO 3
A(I, J) = INT(RND * 5)
PRINT A(I, J);
S = S + A(I, J) ^ 2
NEXT J
P = P * S
PRINT
NEXT I
PRINT
PRINT "P="; P
2
DIM A(10)
RANDOMIZE TIMER
P = 1
FOR I = 1 TO 10
A(I) = INT(RND * 20) - 10
PRINT A(I); " ";
IF A(I) > O THEN
S = S + A(I)
P = P * A(I)
N = N + 1
END IF
NEXT I
PRINT
PRINT "S=";
SPRINT "P=";
PPRINT "Kol-vo="; N