Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Процедуры и функции (http://www.tehnari.ru/f41/t43763/)

Xelboi19 23.12.2010 18:24

Процедуры и функции
 
Помогите написать программу!
Задан треугольник АВС длинами своих сторон. Определить его медианы (медиана,проведенная к стороне А равна 0.5(2в2+2с2-а2).
Код:

Program forth;
uses crt;
Var
 k1,k2,b,c:byte; p1,p2,n,v1,v2,a:real;
function fact(x:real):real;
begin
 if x=0 then fact:=1
    else fact:=fact(x-1)*x;
    end;
begin clrscr;
a:=1/2;
k1:=b; k2:=c;
 v1:=fact(k1);  p1:=2*2*a+2*2*c+2*b;
  v2:=fact(k2);  p2:=2*2*a+2*2*b+2*c;
writeln('Мидиана к стороне b =',p1);
  writeln('Мидиана к стороне =',p2);
readln;
end.

получается что такое но эта полная ерись=)))

Vladimir_S 23.12.2010 21:20

Вложений: 1
Цитата:

Сообщение от Xelboi19 (Сообщение 433663)
получается что такое но эта полная ерись=)))


Еще бы не ерИсь! Конечно - ерИсь и есть! Если Вы исходите из неверной формулы, потом, вместо того, чтобы сесть и написать свой код, берете чью-то программу, не имеющую ни малейшего отношения к задаче, в которой вычисляются факториалы неких целых чисел, впихиваете кое-как свои мИдианы - так чего же Вы ожидаете в итоге, кроме полной ерИси?

Прежде всего - правильная
формула вычисления медианы:
Вложение 26880
Теперь, собственно, эта простейшая программка:
Код:

VAR
 a,b,c,Ma,Mb,Mc:Real;
BEGIN
 Write('a= ');
 ReadLn(a);
 Write('b= ');
 ReadLn(b);
 Write('c= ');
 ReadLn(c);
 Ma:=0.5*SQRT(2*SQR(b)+2*SQR(c)-SQR(a));
 Mb:=0.5*SQRT(2*SQR(a)+2*SQR(c)-SQR(b));
 Mc:=0.5*SQRT(2*SQR(a)+2*SQR(b)-SQR(c));
 WriteLn('Ma=',Ma:10:5);
 WriteLn('Mb=',Mb:10:5);
 WriteLn('Mc=',Mc:10:5);
 ReadLn;
END.

И никакой ереси!

Xelboi19 23.12.2010 22:58

Цитата:

Сообщение от Vladimir_S (Сообщение 433762)

Еще бы не ерИсь! Конечно - ерИсь и есть! Если Вы исходите из неверной формулы, потом, вместо того, чтобы сесть и написать свой код, берете чью-то программу, не имеющую ни малейшего отношения к задаче, в которой вычисляются факториалы неких целых чисел, впихиваете кое-как свои мИдианы - так чего же Вы ожидаете в итоге, кроме полной ерИси?

Прежде всего - правильная
формула вычисления медианы:
Вложение 26880
Теперь, собственно, эта простейшая программка:
Код:

VAR
 a,b,c,Ma,Mb,Mc:Real;
BEGIN
 Write('a= ');
 ReadLn(a);
 Write('b= ');
 ReadLn(b);
 Write('c= ');
 ReadLn(c);
 Ma:=0.5*SQRT(2*SQR(b)+2*SQR(c)-SQR(a));
 Mb:=0.5*SQRT(2*SQR(a)+2*SQR(c)-SQR(b));
 Mc:=0.5*SQRT(2*SQR(a)+2*SQR(b)-SQR(c));
 WriteLn('Ma=',Ma:10:5);
 WriteLn('Mb=',Mb:10:5);
 WriteLn('Mc=',Mc:10:5);
 ReadLn;
END.

И никакой ереси!

Эт конечно хорошо ну мне надо написать процедуру/функцию реализующую выполнение задания

Vladimir_S 24.12.2010 09:44

Цитата:

Сообщение от Xelboi19 (Сообщение 433836)
Эт конечно хорошо ну мне надо написать процедуру/функцию реализующую выполнение задания

Ну так кто ж Вам мешает сделать это на базе приведенного выше кода?

Xelboi19 24.12.2010 17:27

Цитата:

Сообщение от Vladimir_S (Сообщение 433972)
Ну так кто ж Вам мешает сделать это на базе приведенного выше кода?

procedure имя процедуры (формальные параметры);
раздел описаний процедуры
begin

Я не поиму че сдесь писать, если просто формулу как потом вызвать процедуру и чтоб она щитала 3медианы?

end;

Vladimir_S 24.12.2010 21:17

Вот так:
Код:

VAR
 a,b,c,Ma,Mb,Mc:Real;

Procedure Med_Length(Aml,Bml,Cml:Real;
                    var MAml:Real; var MBml:Real; var MCml:Real);
 begin
  MAml:=0.5*SQRT(2*SQR(Bml)+2*SQR(Cml)-SQR(Aml));
  MBml:=0.5*SQRT(2*SQR(Aml)+2*SQR(Cml)-SQR(Bml));
  MCml:=0.5*SQRT(2*SQR(Aml)+2*SQR(Bml)-SQR(Cml));
 end;

BEGIN
 Write('a= ');
 ReadLn(a);
 Write('b= ');
 ReadLn(b);
 Write('c= ');
 ReadLn(c);
 Med_Length(a,b,c,Ma,Mb,Mc);
 WriteLn('Ma=',Ma:10:5);
 WriteLn('Mb=',Mb:10:5);
 WriteLn('Mc=',Mc:10:5);
 ReadLn;
END.


Xelboi19 25.12.2010 00:08

Спасибо


Часовой пояс GMT +4, время: 04:28.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.