Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2010, 22:05   #1
S1nek
 
Регистрация: 19.07.2010
Сообщений: 9
По умолчанию Из процедуры в функцию и наоборот

Прошу пращения,я ненаписал в теме что задание на паскале (Pascal).
Люди добрые необходима ваша помощь
Мне нужно из функции перевести в процедуру:

Код:
program Perimetr;
function GetHipo(kat1,kat2:real):real;
begin
  GetHipo:=sqrt(sqr(kat1)+sqr(kat2));
end;
var
  AB,AC,DC:real;
  P:real;
begin
  writeln('Vvedite AB');
  Readln(AB);
  writeln('Vvedite AC');
  Readln(AC);
  writeln('Vvedite DC');
  Readln(DC);
  P:=AB+AC+DC+GetHipo(GetHipo(AB,AC),DC);
  WriteLn('Perimetr = ',P:8:3);
  ReadLn;
end.

И из процедуры перевести в функцию:

Код:
Program OtreZZZki;
uses crt;
const nmax=20;
type otr=record
         x1,y1,x2,y2:real;
         end;
procedure Dlina(x1,y1,x2,y2:real; var d:real);
begin
d:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;
var a:array[1..nmax] of otr;
    n,i,imx:byte;
    d,mx:real;
begin
clrscr;
repeat
write('Kolicestvo otrezkov ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Vvedite koordinati nacala i konca otrezkov:');
mx:=0;imx:=0;
for i:=1 to n do
 begin
  writeln('Otrezok ',i);
  readln(a[i].x1,a[i].y1,a[i].x2,a[i].y2);
  Dlina(a[i].x1,a[i].y1,a[i].x2,a[i].y2,d);
  writeln('Dlina=',d:0:2);
  if d>mx then
   begin
    mx:=d;
    imx:=i;
   end;
 end;
write('Naibolsyu dliny imeet otrezok ',imx,' ona=',mx:0:2);
readln
end.

Последний раз редактировалось Stilet; 26.07.2010 в 08:52.
S1nek вне форума Ответить с цитированием
Старый 22.07.2010, 22:38   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

1)
Код:
program Project1;

uses
  SysUtils;

procedure Perimetr(kat1,kat2,kat3:real);
var
  bufP, P : Real;
begin
  bufP := sqrt(sqr(kat1)+sqr(kat2));
  P := kat1 + kat2 + kat3 + (sqrt(sqr(bufP)+sqr(kat3)));
  Writeln('Perimetr = ', P:8:3);
end;

var
  AB,AC,DC, P:real;

begin
writeln('Vvedite AB');
Readln(AB);
writeln('Vvedite AC');
Readln(AC);
writeln('Vvedite DC');
Readln(DC);
Writeln;
Perimetr(AB, AC, DC);
Readln;
end.
2)
Код:
program Project2;

uses
  SysUtils;

const
  nmax=20;

type
  otr=record
    x1,y1,x2,y2:real;
  end;

function Dlina(x1,y1,x2,y2:real) : Real;
begin
Dlina:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;

var
  a:array[1..nmax] of otr;
  n,i,imx:byte;
  d,mx:real;

begin
repeat
write('Kolicestvo otrezkov ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Vvedite koordinati nacala i konca otrezkov:');
mx:=0;imx:=0;
for i:=1 to n do
begin
writeln('Otrezok ',i);
readln(a[i].x1,a[i].y1,a[i].x2,a[i].y2);
d := Dlina(a[i].x1,a[i].y1,a[i].x2,a[i].y2);
writeln('Dlina=',d:0:2);
if d>mx then
begin
mx:=d;
imx:=i;
end;
end;
write('Naibolsyu dliny imeet otrezok ',imx,' ona=',mx:0:2);
readln
end.
Из предыдущей темы:
Цитата:
P.S но возникла ещё одна проблема.... но это уже в другой теме....
да я смотрю тут было много проблем...мдааа, что же вы там людей не "добили" своей ленью...
Будь проще и люди к тебе потянутся

Последний раз редактировалось Stilet; 26.07.2010 в 08:53.
spamer вне форума Ответить с цитированием
Старый 22.07.2010, 23:15   #3
S1nek
 
Регистрация: 19.07.2010
Сообщений: 9
По умолчанию

Спасибо spamer я вам очень благодпрен вы мне очень помогли,
мне приятно что меня узнают, и читают мои другие темы
(я про лень) А вот кстати мой вариант перевода из функции в процедуру задания о нахождении периметра :

Код:
program Perimetr;
uses crt;
procedure Gip(a,b:real; var c:real);
begin
  c:=sqrt(a*a+b*b);
end;
var ab,ac,dc,x,y,p:real;
begin
 clrscr;
 writeln('Vvedite dlini 3 storon treygolnika:');
 readln(ab,ac,dc);
 Gip(ab,ac,x);
 Gip(x,dc,y);
 p:=ab+ac+y+dc;
 write('Perimetr figyri=',p:0:3);
readln
end.

Да и кстати что такое SysUtils;?
-при написании его в списке
модулей выводится ошибка,
При замене на Crt; Всё нормально работает....
Извините за такой вопрос просто я ни разу с ним не сталкивался...

Последний раз редактировалось Stilet; 26.07.2010 в 08:58.
S1nek вне форума Ответить с цитированием
Старый 25.07.2010, 12:51   #4
Анатоль
Пользователь
 
Регистрация: 17.12.2009
Сообщений: 74
По умолчанию

Слушай явообще твой код не понял. Если у тебя дан треугольник и даны 3 его стороны то ты их просто суммируешь и получаешь периметр.
Если это 4ёхугольник, то AC это диагональ и к сумме периметра она никак не привязана. Так что разберись чё ты хотел написать.
Анатоль вне форума Ответить с цитированием
Старый 26.07.2010, 10:57   #5
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

Анатоль
У него по условию задачи четырехугольник такой, что диагональ разбивает его на два прямоугольных треугольника (он в другой теме ее приводил). Так что периметр четырехугольника он ищет правильно.
Snejnaya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дюймы в сантиметры и наоборот. С++ Salamandra Помощь студентам 5 04.01.2010 22:39
Ввод слова наоборот program123 Общие вопросы Delphi 4 09.05.2009 11:06
ВПР наоборот Python Microsoft Office Excel 6 11.04.2009 00:08
Слово наоборот Ketu Паскаль, Turbo Pascal, PascalABC.NET 12 16.03.2008 00:23