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

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

Форум «Всё о Паскале» _ Задачи _ Oshibka v proge

Автор: Perfez 10.03.2007 18:33

В чём ошибка в программе?


type
bool=array[1..2000] of boolean;
var
n,i,p,k:integer;
x,y:array[1..2000] of extended;
nb:bool;
min:extended;
Function Check(nb:bool; n:integer):integer;
var
l,j,s:integer;
Begin
Check:=-1;
For l:=1 to n do
If nb[l]=False then
Begin
j:=j+1;
s:=l;
End;
If j=1 then
Begin
Check:=s;
p:=s;
End;
End;
Begin
ReadLn(n);
For i:=1 to n do
Read(x[n],y[n]);
For i:=2 to n do
If min>Sqrt(Sqr(x[1]-x[i])+Sqr(y[1]-y[i])) then
Begin
min:=Sqrt(Sqr(x[1]-x[i])+Sqr(y[1]-y[i]));
k:=i;
End;
nb[k]:=True;
Repeat
For i:=1 to n do
If nb[i]=False then
Begin
If min>Sqrt(Sqr(x[k+1]-x[i])+Sqr(y[k+1]-y[i])) then
Begin
min:=Sqrt(Sqr(x[k+1]-x[i])+Sqr(y[k+1]-y[i]));
k:=i;
End;
nb[k]:=True;
End;
Until Check(nb,n)<>-1;
WriteLn(p);
End.




Прикрепленные файлы
Прикрепленный файл  oyun.pas ( 904 байт ) Кол-во скачиваний: 216

Автор: мисс_граффити 10.03.2007 19:27

У меня компилируется, даже ответ выдает...
Правильный или нет - загадка, потому что неизвестно, что она должна делать...

Автор: Perfez 10.03.2007 19:30

Проверьте пожалуйста этот тест:
6
1 -1
-2 0
1 3
4 7
5 -3
6 2

Автор: Zzzz... 10.03.2007 21:45

Лучше напиши само условие задачи

Автор: Perfez 11.03.2007 0:28

Вот условие задачи: smile.gif
Есть одна игра.В ней участвуют N человек(2<=N<=2000),вводятся их координаты(-10000<=x/y<=10000*real).Логика в том что первый по счёту/по порядку/по списку человек находит самого близкого к себе по расстоянию,и тот выбывает из игры,после этого человек идущий по порядку/по счёту/по списку после выбывшего опять проделывает вышеуказанную процедуру,всё это делается до тех пор пока не останеться один человек.Выводиться индекс этого человека в матрице.
Всё по моему... smile.gif
Задача в общем простая,но я не пойму в чём проблема... blink.gif

Автор: мисс_граффити 11.03.2007 1:36

начальные значения задавать не надо?...
min присвоить что-нибудь... для приличия...
а то неизвестно, что выдаст

If min>Sqrt(Sqr(x[1]-x[i])+Sqr(y[1]-y[i]))

точнее, поскольку с большой степенью вероятности min=0...

Автор: Perfez 11.03.2007 12:54

скажем,да может быть, smile.gif но это тоже не помогает: wacko.gif yes2.gif

Цитата


min:=30000;



и ничего... smile.gif wacko.gif
Прикрепленный файл  oyun.pas ( 918 байт ) Кол-во скачиваний: 467