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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2011, 19:43   #1
Avatonk
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 21
Сообщение Pascal.Задача про отрезки.

Нашёл ответ на свою задачку в интернете, но там сделано через функцию,как сделать через процедуру?
Задача:
На плоскости заданы своими координатами n точек. Создать массив размером n(n -1), элементами которого являются расстояния от каждой точки до n -1 других.
Вот код:

uses crt;
const nmax=20;
type Tpoint=record
x,y:integer;
end;
function Dlina(p,q:Tpoint):real;
begin
Dlina:=sqrt(sqr(p.x-q.x)+sqr(p.y-q.y));
end;
var a:array[1..nmax]of TPoint;
b:array[1..nmax,1..nmax]of real;
n,i,j,k:byte;
begin
clrscr;
randomize;
repeat
write('Vvedite kolichestvo tochek n=');
readln(n);
until (n>1)and(n<=nmax);
for i:=1 to n do
for j:=1 to n do
begin
a[i].x:=random(50)-25;
a[i].y:=random(50)-25;
end;
write('X '); {}
for i:=1 to n do
write(a[i].x:4);
writeln;
write('Y ');
for i:=1 to n do
write(a[i].y:4);
writeln;
for i:=1 to n do
begin
k:=0;
for j:=1 to n do
if j<>i then
begin
inc(k);
b[i,k]:=Dlina(a[i],a[j]);
end;
end;
Writeln('Rezultat:');
for i:=1 to n do
begin
for j:=1 to k do
write(b[i,j]:6:2);
writeln;
end;
readln
end.
Avatonk вне форума Ответить с цитированием
Старый 25.12.2011, 22:29   #2
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

передавать в неё var-параметр
Camaro Chevelle вне форума Ответить с цитированием
Старый 25.12.2011, 22:53   #3
Avatonk
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 21
По умолчанию

всмысле?перенести в неё весь раздел var(всё из него)?
Avatonk вне форума Ответить с цитированием
Старый 25.12.2011, 23:06   #4
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

Код:
procedure dlina(p, q: tpoint; var res: real);
  begin
    res:=sqrt(sqr(p.x-q.x)+sqr(p.y-q.y));
  end;
и в проге надо поменять строчку
Код:
b[i,k]:=Dlina(a[i],a[j]);
на
Код:
Dlina(a[i], a[j], b[i, k]);
Camaro Chevelle вне форума Ответить с цитированием
Старый 25.12.2011, 23:12   #5
Avatonk
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 21
По умолчанию

Отлично!Спасибо!
Avatonk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal.Задача про записи. Avatonk Помощь студентам 9 13.12.2011 17:54
Pascal-задача про списки Cod_371 Помощь студентам 0 22.11.2010 19:12
Задача про массивы (pascal) -SG- Помощь студентам 1 25.11.2009 20:24
[Pascal] Задача про натуральные числа Knife Помощь студентам 1 22.04.2009 02:04