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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2012, 19:47   #1
Sweet-_-Orange
Пользователь
 
Регистрация: 10.01.2012
Сообщений: 32
По умолчанию Функция делфи

Задано описание данных:var X1, Y1, X2, Y2 :real;
P, S, А, В :real;
Оформить функцию с именем Proc1, которая принимает координаты противоположных углов прямоугольника и возвращает его площадь и периметр Разработать работающую программу





у меня не вычисляет, помогите, не знаю как обратится к функции
Код:
var  P, S, a, b :real;
X1, Y1, X2, Y2 :real;
function Proc1:integer;
  begin
  b:=Y2-Y1;
  a:=X2-X1;
  p:=(2*(X2-X1))+(2*(Y2-Y1));
  s:=(Y2-Y1)*(X2-X1);
  end;
  begin
  write('Vvedite X2');
  readln(X2);
  write('Vvedite X1');
  readln(X1);
  write('Vvedite Y2');
  readln(Y2);
  write('Vvedite Y1');
  readln(Y1);
  readln(p);
  readln(s);
  end.
Sweet-_-Orange вне форума Ответить с цитированием
Старый 06.02.2012, 20:08   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

В самый конец добавь
Код:
  proc1;
  writeln(p);
  writeln(S);
Да, и будь я преподом, не принял бы. Глобальные переменные ни есть хорошо.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 06.02.2012, 20:15   #3
Sweet-_-Orange
Пользователь
 
Регистрация: 10.01.2012
Сообщений: 32
По умолчанию

ну а как сделать без глобальных переменных и чтобы обчисляла площадь и периметр?
Sweet-_-Orange вне форума Ответить с цитированием
Старый 06.02.2012, 20:23   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Ну на счет формул подсчета думать лень, а чтобы избавиться от глобальных переменных вписывай их при объявлении процедуры.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 06.02.2012, 20:25   #5
Sweet-_-Orange
Пользователь
 
Регистрация: 10.01.2012
Сообщений: 32
По умолчанию

формулы правильные
делфи не шарю, поэтому не понимаю, как вписать при объявлении процедуры
Sweet-_-Orange вне форума Ответить с цитированием
Старый 06.02.2012, 20:45   #6
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Кстати, у тебя еще и в формулеровке задания ошибка
Цитата:
Оформить функцию с именем Proc1, которая принимает координаты противоположных углов прямоугольника и возвращает его площадь и периметр Разработать работающую программу
Функция не может возвращать два значения. Тут подходит процедура.

Код:
Procedure Proc1(y2,y1,x2,x1,p,s:real);
  begin
//  b:=Y2-Y1;//зачем?
//  a:=X2-X1;//тоже не надо
  p:=(2*(X2-X1))+(2*(Y2-Y1));
  s:=(Y2-Y1)*(X2-X1);
  end;
потом в теле программы (опять же в конце) пишешь.
Код:
Proc1(y2,y1,x2,x1,p,s:real);
  writeln(p);
  writeln(S);
Может показаться, что ничего не изменилось, но разница есть. Теперь для подсчета площади и периметра можно использовать ЛЮБЫЕ координаты и сохранять результат в ЛЮБЫЕ переменные.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 06.02.2012, 20:53   #7
Sweet-_-Orange
Пользователь
 
Регистрация: 10.01.2012
Сообщений: 32
По умолчанию

ну оно не вычисляет
ноли выводятся
Sweet-_-Orange вне форума Ответить с цитированием
Старый 06.02.2012, 20:54   #8
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Признаю, мой косяк
Код:
Procedure Proc1(y2,y1,x2,x1:real; var p,s:real);
  begin
//  b:=Y2-Y1;//зачем?
//  a:=X2-X1;//тоже не надо
  p:=(2*(X2-X1))+(2*(Y2-Y1));
  s:=(Y2-Y1)*(X2-X1);
  end;
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 06.02.2012, 20:58   #9
Sweet-_-Orange
Пользователь
 
Регистрация: 10.01.2012
Сообщений: 32
По умолчанию

выдает
1.400000000000000Е+0.01
1.000000000000000Е+0.01

знаки после запятой,
readln(p:3:3);
readln(s:3:3);
так?
Sweet-_-Orange вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи. Функция, возвращающая букву системного диска(раздела). Или как ее можно получить по-другому? быдлокодер Помощь студентам 2 08.06.2010 23:26
Рекурсивная функция Делфи Asira Помощь студентам 2 15.12.2009 17:43
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
подпрограмма-функция в делфи sv2311 Помощь студентам 1 09.04.2009 18:14
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50