Program Ul3;
var
p,C1,C2,C3,C4: real;
function s(a: real; b: real): integer;
var
str: real;
begin
str:=SQRT(exp(2*LN(a))+exp(2*LN(b)));
Writeln('Третья сторона=',SQRT(exp(2*LN(a))+exp(2*LN(b))) );
end;
Begin
s(2,2);
C1:= s;
s(2,5);
C2:= s ;
s(7,5);
C3:= s;
s(2,7);
C4:= s;
P:=C1+C2+C3+C4;
Writeln('Периметр фигуры=', P);
End.
Другие языки программирования и технологии
Почему пишет : "Нельзя преобразовать тип function(a:real,b:real) real к real "
1) функция S - почти верно, но !
function s(a: real; b: real): integer;
var
str: real;
begin
str:=SQRT(exp(2*LN(a))+exp(2*LN(b)));
Writeln('Третья сторона=',SQRT(exp(2*LN(a))+exp(2*LN(b))) );
end;
str - ненужна совсем! функция должна сама возвращать результат
т. е. в раннем паскале надо было написать внутри функции s:=sqrt(...
в новых версиях для этого есть result
объявлять параметры лучше группой, но это не принципиально. тогда имеем
function s(a,b: real): integer;
корень из целого чаще будет типа real, получаем
function s(a,b: real): real;
далее. для вычисления квадрата не стоит использовать жуткие алгоритмы логарифмов и экспонент. если уж хочется выпендриться то исползуейте SQR - стандартную паскалевскую функцию квадрата, а лучше просто умножить число само на себя.
имеем конечный вид функции
function s(a,b: real): real;
begin
result:=sqrt(a*a+b*b);
end
выводить промежуточный результат можно, но только для самопроверки. в итоговом варианте лучше вывод оставить основной программе
сделать что то типа
c1:=S(2, 2);
Writeln('Третья сторона=',C1:10:2); // тут незабываем форматирование! это хороший тон
а высчитав все длины просто складываем их.
writeln('периметр равен :',c1+c2+c3+c4:10:2);
function s(a: real; b: real): integer;
var
str: real;
begin
str:=SQRT(exp(2*LN(a))+exp(2*LN(b)));
Writeln('Третья сторона=',SQRT(exp(2*LN(a))+exp(2*LN(b))) );
end;
str - ненужна совсем! функция должна сама возвращать результат
т. е. в раннем паскале надо было написать внутри функции s:=sqrt(...
в новых версиях для этого есть result
объявлять параметры лучше группой, но это не принципиально. тогда имеем
function s(a,b: real): integer;
корень из целого чаще будет типа real, получаем
function s(a,b: real): real;
далее. для вычисления квадрата не стоит использовать жуткие алгоритмы логарифмов и экспонент. если уж хочется выпендриться то исползуейте SQR - стандартную паскалевскую функцию квадрата, а лучше просто умножить число само на себя.
имеем конечный вид функции
function s(a,b: real): real;
begin
result:=sqrt(a*a+b*b);
end
выводить промежуточный результат можно, но только для самопроверки. в итоговом варианте лучше вывод оставить основной программе
сделать что то типа
c1:=S(2, 2);
Writeln('Третья сторона=',C1:10:2); // тут незабываем форматирование! это хороший тон
а высчитав все длины просто складываем их.
writeln('периметр равен :',c1+c2+c3+c4:10:2);
c1 - число, s - функция
c1:=s
ты пытаешься занести функцию в число
...

c1:=s
ты пытаешься занести функцию в число
...

Сергей Клюшнёв
Помоги пожалуйста... Программа должна искать сторону ромба из известных 2х других ( по теореме пифагора) и потом зная все 4 стороны найти периметр.
program Ul3;
var
p, C1, C2, C3, C4: real;
function s(a: real; b: real): real;
begin
result := SQRT(sqr(a)+sqr(b));
end;
begin
C1 := s(2, 2);
C2 := s(2, 5);
C3 := s(7, 5);
C4 := s(2, 7);
P := C1 + C2 + C3 + C4;
Writeln('Периметр фигуры=', P:0:3);
end.
var
p, C1, C2, C3, C4: real;
function s(a: real; b: real): real;
begin
result := SQRT(sqr(a)+sqr(b));
end;
begin
C1 := s(2, 2);
C2 := s(2, 5);
C3 := s(7, 5);
C4 := s(2, 7);
P := C1 + C2 + C3 + C4;
Writeln('Периметр фигуры=', P:0:3);
end.
Сергей Клюшнёв
Я тебя люблю, спасибо большое.
Вот это:
s(2,2);
C1:= s;
Замени на:
C1:= s(2,2);
s(2,2);
C1:= s;
Замени на:
C1:= s(2,2);
Похожие вопросы
- Уравнение a*x+b*y=c
- Найти трехзначные числа a, b, c, все цифры которых различны и удовлетворяют уравнению a^2 – b^2 – c^2 = a – b – c.
- Как преобразовать тип string к типу int? C++
- дано масів А(1...n, 1...m) скласти програму пошуку всіх його елементів, що знаходяться між a та b
- Паскаль! Даны векторы: a={xn}, b={yn}, c={zn}, d={dn}. Построить матрицу К, сторонами которой являются упорядочены в
- Помогите, разработать программу вычисления двух выражений, в ассемблереX= (a/2+b^2)/3*cY= (b^3-(12+x)/a)/c+2
- Не понимаю принцип имплекации A->B или A=>B
- Есть ли у матриц A и B одинаковые строки? помогите пожалуйста! очень надо! в VBA
- Даны два массива A и B размера N, элементы которых упорядочены по убыванию. Объединить эти массивы так, чтобы результ
- кэш второго уровня кеш 1mb по 512 кб на ядро?в dword писать 1mb или 512kb кеш выстовляеться в B или Kb ???