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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 19:08   #1
Needfor5
 
Регистрация: 09.04.2012
Сообщений: 8
Восклицание Использование подпрограмм при программировании на языке Паскаль

Четыре точки заданы своими координатами x={x1, x2}, y={y1, y2}, z={z1, z2}, p={p1,p2}. Выяснить, какие из них находятся на максимальном расстоянии друг от друга, и вывести на печать значение этого расстояния.
Вычисление расстояния между двумя точками оформить в виде подпрограммы типа PROCEDURE.
Исходные данные: x={4,8;-3}; y={-6,5;1,2}; z={-3,7;-4,5}; p={7,8; 2}



Помогите пожалуйста в решении. Заранее благодарен.
Needfor5 вне форума Ответить с цитированием
Старый 09.04.2012, 20:03   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Логичнее в виде функции. Ну да ладно, вот процедура:
Код:
procedure Distance (A, B: TCoord; var Res: Single);
begin
  Res := Sqrt (Sqr (A.X - B.X) + Sqr (A.Y - B.Y));
end;
TCoord - запись из двух полей X, Y типа Single (координаты точки).
Arigato вне форума Ответить с цитированием
Старый 09.04.2012, 20:18   #3
Needfor5
 
Регистрация: 09.04.2012
Сообщений: 8
По умолчанию

Это вся программа?

Я этом вообще нуб
Needfor5 вне форума Ответить с цитированием
Старый 09.04.2012, 20:27   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Дальше сам пиши или дуй во Фриланс.
Arigato вне форума Ответить с цитированием
Старый 09.04.2012, 23:26   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Arigato, домо аригато за процедуру.
Код:
uses
  CRT;

type
  TCoord = record 
    X, Y: single;
  end;

var
  a: array[1..4] of TCoord;
  i, j: integer;
  max, tmp: single;

procedure Distance(A, B: TCoord; var Res: Single);
begin
  Res := Sqrt(Sqr(A.X - B.X) + Sqr(A.Y - B.Y));
end;

begin
  for i := 1 to 4 do
  begin
    write('Input coordinates of ', i, ' point: ');
    readln(a[i].x, a[i].y);
  end;
  max := 0;
  for i := 1 to 3 do
    for j := i + 1 to 4 do
    begin
      distance(a[i], a[j], tmp);
      if tmp > max then
        max := tmp;	
    end;
  writeln('Maximum distance (', max:0:3, ') between:');
  for i := 1 to 3 do
    for j := i + 1 to 4 do
    begin
      distance(a[i], a[j], tmp);
      if tmp = max then
        writeln(i, ' and ', j, ' point');	
    end;
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.04.2012, 16:08   #6
Needfor5
 
Регистрация: 09.04.2012
Сообщений: 8
По умолчанию

Это на Турбо Паскале или на Делфи?
Needfor5 вне форума Ответить с цитированием
Старый 10.04.2012, 18:22   #7
An4ix.Murad
 
Регистрация: 10.04.2012
Сообщений: 5
По умолчанию

На турбо видно же :-)
у меня почти такая только надо минимум найти и только не процедура, а функция ) Спасибо за прогу.

Четыре точки заданы своими координатами x={x1, x2, x3}, y={y1, y2, y3}, z={z1, z2, z3}, p={p1, p2, p3}. Выяснить, какие из них находятся на минимальном расстоянии друг от друга, и вывести на печать значение этого расстояния.
Вычисление расстояния между двумя точками оформить в виде подпрограммы типа FUNCTION.
Исходные данные: x={-3,2; 5; 1,4}; y={2,2; -4; 3} z={-6,1; -3; 1}; p={2,7; 1; -1}
An4ix.Murad вне форума Ответить с цитированием
Старый 10.04.2012, 18:25   #8
Needfor5
 
Регистрация: 09.04.2012
Сообщений: 8
По умолчанию

тип TCoord на тубо бывает?
Needfor5 вне форума Ответить с цитированием
Старый 10.04.2012, 18:29   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Needfor5, это пользовательский тип (в разделе type описываются свои типы).

An4ix.Murad (если еще не сделали):
Код:
uses
  CRT;

type
  TCoord = record 
    X, Y, Z: single;
  end;

var
  a: array[1..4] of TCoord;
  i, j: integer;
  min, tmp: single;

function Distance(A, B: TCoord): single;
begin
  Distance := Sqrt(Sqr(A.X - B.X) + Sqr(A.Y - B.Y) + Sqr(A.Z - B.Z));
end;

begin
  for i := 1 to 4 do
  begin
    write('Input coordinates of ', i, ' point: ');
    readln(a[i].x, a[i].y, a[i].z);
  end;
  min := 100000;
  for i := 1 to 3 do
    for j := i + 1 to 4 do
    begin
      tmp := distance(a[i], a[j]);
      if tmp < min then
        min := tmp;	
    end;
  writeln('Minimum distance (', min:0:3, ') between:');
  for i := 1 to 3 do
    for j := i + 1 to 4 do
    begin
      tmp := distance(a[i], a[j]);
      if tmp = min then
        writeln(i, ' and ', j, ' point');	
    end;
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.04.2012 в 18:34.
BDA вне форума Ответить с цитированием
Старый 10.04.2012, 18:55   #10
An4ix.Murad
 
Регистрация: 10.04.2012
Сообщений: 5
По умолчанию

Я не особо понял "tmp" что означает ? min минимум ты обозначил а tmp что ?
An4ix.Murad вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание и использование файлов на языке паскаль Julichka1k Помощь студентам 3 28.03.2012 10:02
создание и использование файлов на языке паскаль Julichka1k Помощь студентам 6 22.03.2012 16:14
ИСПОЛЬЗОВАНИЕ ПОДПРОГРАММ Солнышконанебе Помощь студентам 2 17.12.2011 17:20
Использование подпрограмм бургер Паскаль, Turbo Pascal, PascalABC.NET 5 29.04.2010 04:21