![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Tribunal |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
Задача такова:
Дан файл вещественных чисел,которые являются координатами точек. Нужно найти такие 3 точки, что треугольник, построенный на этих точках будет содержать максимальное количество точек множества. Координаты этих трёх точек сохранить в файле, как результат +нужна графическая иллюстрация к этой задаче. Предложите,пожалуйста,варианты решения этой задачи или какие-нибудь идеи. У меня они пока не могут оформиться... Буду благодарна за помощь. Сообщение отредактировано: Tribunal - 13.05.2006 19:02 -------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#2
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
как узнать, принадлежит ли точка треугольнику - есть здесь:
http://algolist.manual.ru/olimp/geo_prb.php а в целом.... перебором, наверное. для каждых 3 точек считать, сколько точек будет внутри этого треугольника. если больше, чем хранящееся в переменной max значение - запоминать точки. надеюсь, проблем с чтением из файла и с записью в него нет? иллюстрация... тут придется координаты округлять. или брать масштаб побольше, а потом все равно округлять - Паскаль при рисовании любит целочисленные. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Tribunal |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
а для того,чтобы координаты можно было редактировать(изменять,удалять),их лучше считать из файла в список?
и всё же мне не очень понятьно,как перебирать разные треуголники и при этом делать проверку на кол-во точек...(( может кто-нибудь помочь разобраться?...( -------------------- irreparabilium felix olivio rerum
|
Malice |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Где-то вот так:
max:=0; t1_max:=1; t2_max:=2; t3_max:=3; можно еще добавить проверку, чтоб x был не равен t1,t2,t3. |
Tribunal |
![]()
Сообщение
#5
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
я решила считывать координаты из файла в список.
вот,что получилось,но появляется ошибка: invalid numeric input type в файле записаны вещ-ные числа таким образом: 40,5 8 26,4 5,099 -------------------- irreparabilium felix olivio rerum
|
Бродяжник |
![]()
Сообщение
#6
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если они записаны именно таким образом, то замените запятую на точку.
И потом, что значит вот это: pos^.next:=nil; Зачем присваивать nil, если это значение все равно будет тут же утеряно? |
мисс_граффити |
![]()
Сообщение
#7
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
может, я не права, но... не логичнее ли работать с типизированным, а не тестовым файлом?
имхо, "файл вещественных чисел"(по условию) - не text, а file of real. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Tribunal |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
нет.я не написала в условии,
но сказано работать с текстовым файлом. -------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
значит у меня получается вот какая штука:
есть файл координат, которые в свою очередь находятся в списке для обработки. я хочу сделать так,чтобы можно было изменять координаты конкретной точки,то есть по ее номеру. процедура,которая у меня получилась почему-то очищает файл...( почему?подскажите,пожалуйста... Код var xe,ye:real; ne,k:byte; begin writeln('Введите x');read(xe); writeln('Введите y');read(ye); writeln('Введите n');read(ne); assign(f,'position.txt'); rewrite(f); if ne>kol then writeln('Такой координаты нет.Добавьте.') else begin pos:=first; k:=1; while (pos^.next<>nil) and (not eof(f)) do if k=ne then begin pos^.infx:=xe; pos^.infy:=ye; writeln(f,pos^.infx,pos^.infy); end else begin inc(k); pos:=pos^.next; readln; end; end; close(f); Сообщение отредактировано: Tribunal - 16.05.2006 10:05 -------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Tribunal, все правильно... Только файл не "очищается", а НЕ создается... Смотри:
assign(f,'position.txt'); rewrite(f); { ты затерла файл новым, пустым... } А неважно - потому, что там, где я поставил комментарий у тебя при первом же проходе УЖЕ достигнут конец файла (файл-то пустой), и ничего выполняться, естественно, не будет... |
Tribunal |
![]()
Сообщение
#11
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
а как тогда мне изменить файл?
-------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Что-то типа:
writeln('Введите x');read(xe); Набирал прямо здесь - могут проявиться глюки. Но идея у меня именно такая... |
Tribunal |
![]()
Сообщение
#13
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
...эээ...проблема в том,что когда я записываю из файла
в список координаты,я записываю не весь файл,а задаваемое число координат... поэтому при редактировании в файл записывается только та часть,которая была в списке. можно ли сделать,чтобы редактировалась только часть файла,а остальное оставалось на месте? и вообще целесообразно ли для этого использовать списки? -------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Нет... Для того, чтобы отредактировать текстовый файл, его надо редактировать полностью... Текстовый файл - файл с последовательным доступом...
Ты не можешь изменить только середину файла, не трогая всего остального. |
Tribunal |
![]()
Сообщение
#15
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
а тогда можно ли в моем случае это сделать как-то иначе?
может стоит остаток файла записывать в еще один список? -------------------- irreparabilium felix olivio rerum
|
мисс_граффити |
![]()
Сообщение
#16
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а если все несколько упростить - предположить, что количество точек заранее известно.
соответственно, работать не со списками, а с массивом... все, что идет после интересующего кол-ва точек - игнорировать. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Tribunal |
![]()
Сообщение
#17
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
просто я решила работать со списками по той причине,
что так вроде бы удобно редактировать,да и потом обращаться... -------------------- irreparabilium felix olivio rerum
|
Tribunal |
![]()
Сообщение
#18
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
а что обозначает сие выражение?
if Принадлежит (x, t1,t2,t3) then inc (попал); -------------------- irreparabilium felix olivio rerum
|
Malice |
![]()
Сообщение
#19
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
а что обозначает сие выражение? if Принадлежит (x, t1,t2,t3) then inc (попал); Это значит, что нужно определить эту функцию (название конечно не русское будет, я для примера написал), которая будет проверять вхождение точки х в треугольник t1,t2,t3. И если принадлежит - прибавить счетчик. |
Tribunal |
![]()
Сообщение
#20
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
а,ну тогда ясно...
-------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 10:03 |