Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Функция для нахождения расстояния

Автор: Танкистка 8.12.2006 1:15

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


const n=4;
Var i,j,k:integer; t:array[1..n,1..n-1] of real; t1:array[1..n*2] of real;
function rasst(x1,y1,x2,y2:real):real;
Var d:real;
begin
d:=sqrt(sqr(y2-y1)+sqr(x2-x1));
rasst:=d;
end;
begin
randomize;
for k:=1 to n*2 do begin
t1[k]:=random*(20)-10;
writeln(t1[k]:5:2);
end;
for i:=1 to n do begin
for j:=1 to n-1 do
t[i,j]:=rasst(t1[k],t1[k],t1[k],t1[k]);
write (t[i,j]:7:3);
writeln (t[i,j]:7:3);
end;
readln;
end.


Я чет написала: я взяла 4 точки (n), дополнительный массив t1 - там у меня хранятся координаты этих точек(раз точек 4, то координат 8(n*2)). Но вот у меня проблема как эти координаты в функцию из массива засунуть, я просто написала t1[k], но ведь это никуда не годится.. но как решить по другому я не понимаю.. вотъ... жду любых идей! пасиба!)))

Автор: мисс_граффити 8.12.2006 2:03

тебе будет намного проще работать, если ты сделаешь массив с координатами вот так:

t1:array[1..n,1..2] of real;

то есть координаты x и y будешь хранить отдельно.
for i:=1 to n do begin
for j:=1 to n-1 do
t[i,j]:=rasst(t1[i,1],t1[i,2],t1[j,1],t1[j,2]);

я, правда, не совсем поняла, почему ты делаешь i от 1 до n, а j - от 1 до n-1...

Автор: Танкистка 8.12.2006 14:55

мх... пасиба!!! большое... а то вчера чет ночью совсем голова не соображала)))
щас все поняла с твоей подсказки))