![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Tribunal |
![]()
Сообщение
#21
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
выкладываю то,что у меня получилось.
делала на Delphi... если нужно,могу создать аналогичную тему в соответсвующем разделе. очень большая просьба посмотреть то,что у меня получилось... там есть ошибка плана компилирования в delphi и я не знаю,как ее исправить(( посмотрите,пожалуйста... в архиве есть и файл для тестирования... на мой взгляд,вроде всё логично...проверьте,пожалуйста... исправьте или укажите на ошибку там,где считаете нужным.... буду очень благодарна за вашу помощь... сдавать просто завтра(( Прикрепленные файлы ![]() -------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#22
|
Гость ![]() |
Чтобы программа компилировалась, нужно добавить один End, ты его упустила...
procedure TForm1.N5Click(Sender: TObject);
var
popal,max,xp,x1,x2,x3,x1_max,x2_max,x3_max,i:byte;
begin
max:=0;
x1_max:=1; x2_max:=2; x3_max:=3;
for x1:=1 to kol-2 do
for x2:=x1+1 to kol-1 do
for x3:=x2+1 to kol do begin
popal:=0;
for xp:=1 to kol do
if posession(xp,x1,x2,x3)=true then inc(popal);
// Проверку на максимум надо бы делать ВНУТРИ циклов ...
if popal>max then begin
max:=popal;
x1_max:=x1; x2_max:=x2; x3_max:=x3;
end;
end;
// Начальное значение I присвой, и изменение добавь в конце цикла
while i<>kol do begin
if i=x1_max then begin
x1_res:=point[i].x;
y1_res:=point[i].y;
end;
if i=x2_max then begin
x2_res:=point[i].x;
y2_res:=point[i].y;
end;
if i=x3_max then begin
x3_res:=point[i].x;
y3_res:=point[i].y;
end;
end; // <--- Вот этого End-а не было у тебя ...
end;
Проверь, у меня нет кириллицы, а все переделывать на транслит неохота... Должно работать. |
Tribunal |
![]()
Сообщение
#23
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
я тут кое-что еще исправила...
у меня возник вопрос. дело в том,что нужный треугольник находится неправильно. это видно по рисунку....или всё же мне кажется? посмотрите,пожалуйста... кстати,в смысле нет кириллицы?комментарии?или что?я могу переделать... Сообщение отредактировано: Tribunal - 17.05.2006 16:38 -------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#24
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
и еще у меня что-то не то с процедурой удаления
(ради которой я ,собственно,и сделала считывание из файла в список) //ввод-правка-удаление
procedure TForm1.N7Click(Sender: TObject);
begin
Label3.Caption:='Введите номер точки';
edit.Visible:=false;
del.Visible:=true;
add.Visible:=false;
end;
procedure TForm1.delClick(Sender: TObject);
var
ne:byte;
t:t_ptr;
begin
ne:=strtoint(n_edit.Text);
pos := first;
{ищем в списке точку с нужным номером}
while (pos<>nil) and (ne>0) do
begin
dec(ne);
if ne=0 then begin
t:=pos^.next;
pos^.next:=t^.next;
dispose(t);
end
else pos := pos^.next;
end;
{сохраняем в файл}
if SaveDialog1.Execute then
assignfile(f,SaveDialog1.FileName);
rewrite(f);
pos := first;
while pos<>nil do
begin
writeln(f,pos^.infx:8:2,pos^.infy:8:2);
pos:=pos^.next;
end;
closefile(f);
end;
Сообщение отредактировано: volvo - 2.11.2006 13:18 -------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#25
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
я понимаю,что я вас уже достала...(
но я очень надеюсь на вашу помощь... вот еще проблема вылезла... здесь я пытаюсь добавить еще один элемент... но не получается...может лучше через список? procedure TForm1.addClick(Sender: TObject);
var
i:byte;
xe,ye:real;
begin
xe:=strtofloat(x_edit.Text);
ye:=strtofloat(y_edit.Text);
inc(kol);
point[kol].x:=xe;
point[kol].y:=ye;
{сохраняем в файл}
if SaveDialog1.Execute then
assignfile(f,SaveDialog1.FileName);
rewrite(f);
i:=1;
while i<kol do
begin
writeln(f,point[i].x:8:2,point[i].y:8:2);
inc(i);
end;
closefile(f);
end;
-------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#26
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
вот текущий вариант моей программы
Прикрепленные файлы ![]() -------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#27
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
с удалением и изменением я разобралась.
только вот точки треугольника находятся явно неправильно. что-то не то либо в процедуре поиска точек нужного координат: var
popal,max,xp,x1,x2,x3,x1_max,x2_max,x3_max,i:byte;
begin
max:=0;
x1_max:=1;
x2_max:=2;
x3_max:=3;
for x1:=1 to kol-2 do {точка 1}
for x2:=x1+1 to kol-1 do {точка 2}
for x3:=x2+1 to kol do {точка 3}
begin
popal:=0;
for xp:=1 to kol do {перебор всех точек}
if posession(xp,x1,x2,x3)=true then inc(popal);
if popal>max then
begin
max:=popal;
x1_max:=x1;
x2_max:=x2;
x3_max:=x3;
end;
end;
i:=1;
while i<>kol do
begin
if i=x1_max then begin
x1_res:=point[i].x;
y1_res:=point[i].y;
end;
if i=x2_max then begin
x2_res:=point[i].x;
y2_res:=point[i].y;
end;
if i=x3_max then begin
x3_res:=point[i].x;
y3_res:=point[i].y;
end;
inc(i);
end;
end;
либо в проверке условия принадлежности точки треугольнику:
//принадлежность точки треугольнику
function posession(x,t1,t2,t3:byte):boolean;
begin
if square(line(t1,t2),line(t2,t3),line(t3,t1))=square(line(x,t1),line(t1,t2),line(t
2,x))+square(line(x,t2),line(t2,t3),line(t3,x))+square(line(x,t1),line(t1,t3),li
ne(t3,x))
then posession:=true
else posession:=false;
end;
помогите,пожалуйста... -------------------- irreparabilium felix olivio rerum
|
Malice |
![]()
Сообщение
#28
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
помогите,пожалуйста... У меня, к сожалению, делфи стоит 4.5, поэтому проверить не могу, но на вскидку: Мне не нравится вот эта формула: Код if square(1)=square(2)+square(3)+square(4) в функции posession.Я не думаю, что после вычислений с типом real получится точное равенство, нужно сравнить с какой нибудь точностью. т.е. Код if abs(square(1)-(square(2)+square(3)+square(4)))<0.001 then |
Tribunal |
![]()
Сообщение
#29
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
спасибо большое,...я действительно упустила из виду,что числа вещественные...
теперь треугольник ищется верно... -------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#30
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
ура)всё получилось...всем большое спасибо за помощь))
плюс ко всему этому я сделала масштабирование рисунка. если нужно,могу выложить конечную версию программы. -------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#31
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
в общем,вот оно...
Прикрепленные файлы ![]() -------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 8:08 |