IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> почему не работает?, ...
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Помогите, пожалуйста, надо: Определить радиус и центр (т.е. в какой из точек он будет находиться) окружности, на которой лежит наибольшее количество точек заданного на плоскости множества точек.


program okruj_2;
uses crt;
const
z=10;
var
t : array[1..100,(x,y)] of real;
j, i, k, m, n, max : integer;
r, a, b, cx, cy : real;
w: string;

BEGIN clrscr;
writeln('...');
writeln ('esli koordinaty sami xotite zabitb, to zhmite "S", esli net, to "R"');
readln(w); max:=(-1);
if w='r' then begin
writeln ('Skoka to4ek?');
readln (n);
for i:=1 to n do begin
t[i,x]:=(random(100)-50);
t[i,y]:=(random(100)-50);
if t[i,x]>100 then t[i,x]:=random(100);
{eti dve stro4ki, po suti, ne nuzhny, no bez nix on vydaet 4isla > 65 000,
stranno}
if t[i,y]>100 then t[i,y]:=random(100);
writeln('To4ka ',i,': (',t[i,x]4.gif2,'; ',t[i,y]4.gif2,')')
end
end;
if w='s' then begin writeln ('Skoka to4ek?');
readln(n);
for i:=1 to n do begin
write('X',i,'='); readLN(t[i,x]);
write('Y',i,'='); readLN(t[i,y]);
end
end;
for i:=1 to n do
for j:=1 to n do
if j<>i then begin
r:= sqrt(sqr(t[j,x]-t[i,x])+sqr(t[j,y]-t[i,y]));
m:=0
end;
for k:=1 to n do
if k<>j then
if k<>i then
if r = sqrt(sqr(t[k,x]-t[i,x])+sqr(t[k,y]-t[i,y])) then begin
m:=m+1;
if m>=max then
if r>0 then begin
max:=m; cx:=t[i,x]; cy:=t[i,y]
end
end;
writeln(' MAX=',max, ' R=',r:4:2, ' C:(',cx:4:2,'; ',cy:4:2,')');
readln;
END.

Выдает ваще неверный результат, т.е. центр - последняя точка множества, а МАХ=1. wacko.gif


--------------------
Да возрадуется тот, кто мудрым себя считает, да поплачет тот, кто мудрость свою, а вместе с тем, и скорбь свою приумножает... [b] [/b]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Как минимум: Цикл по k выполняется вне циклов по i и j, нужно после for j:=1 to n do поставить begin. потом условие if r = sqrt вряд ли когда выполнится, такое с вещественными числами не пройдет, надо делать так: if abs(r-sqrt..)<e, где e - необходимая точность.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


О, вроде заработала, родная... good.gif


--------------------
Да возрадуется тот, кто мудрым себя считает, да поплачет тот, кто мудрость свою, а вместе с тем, и скорбь свою приумножает... [b] [/b]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.10.2021 16:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name