Помощь - Поиск - Пользователи - Календарь
Полная версия: система координат
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Rus1
Такая вот проблема.
Вот у нас ось X. Она при любых условиях на одном уровне - внизу экрана.
А вот ось Y. Она должна быть после определенного количества отрицательных значениях X, но перед положительными X.
Попробую всё это изобразить, как картинку вставить не знаю, поэтому попробую так (восклицательными знаками отмечены значения X, как положительные, так и отрицательные).


Y
|
|
|
--!--!----!--!-!-- X


Все дело в том, что положительных значений X может быть больше отрицательных, а может наоборот. Может быть есть ноль (тогда он совпадает с осью Y), а может не быть. Как объяснить моему тупоумному компу, где должна находиться ось Y? Я уж столько алгаритмов нарисовал (типа есть ли ноль - да, нет и т.д.). Думаю здесь надо использовать if-then, т.е. если, например, отрицательных значений два, то ось Y должна быть через энный промежуток после самого большого из них. Только всё это реализовать при всех возможных вариантов не получается. Помогите, кому не трудно. yes2.gif
Michael_Rybak
А в чем задача? Найти экранную x-координату, через которую проходит ось y? Сформулируй, в каких координатах записаны отметки на оси х, и как ты их масштабируешь на экран. И скажи, что дано, и что посчитать.

Вообще, как я понял, проще всего взять список всех х'ов, отсортировать, посмотреть за 1 проход, есть ли там 0, и если нет - вставить на нужное место
мисс_граффити
с тупоумными компами не сталкивалась, к сожалению, так что особенностей работы с ними не знаю.
как может не быть нуля - тоже слабо понимаю, если есть положительные и отрицательные элементы. Даже если 0 не задан в явном виде (х - это элементы массива?).
Масштаб какой-то берешь для отмечания х? вот и отсчитываешь, где предположительно находится ноль.
Rus1
Так, по-видимому меня не поняли. Предположим, что программа уже готова. Пользователь вводит значение n (количество значений x), затем поочередно вводит x[1], x[2],..., x[n]. Эти значения могут быть как положительными, так и отрицательными и могут равняться нулю. Всё понятно?
Как сделать так, чтобы ось Y находилась после всех отрицательных значений и перед положительными? Масштаб здесь не важен, т.е., например, расстояние от x[1]=1 до x[2]5 будет равно расстоянию от x[2]=5 до x[3]=100.
мисс_граффити
пользователь их вводит по порядку? или вперемешку?
Rus1
вперемешку, но программа потом упорядочит
мисс_граффити
ну пусть вставляет 0, когда будет упорядочивать.
или как только при рисовании обнаружит число >=0, нарисует ось y.
или, раз все равно масштаб не соблюдаешь, рисуй по центру, а остальные лепи как получится.
Rus1
Соображаю, соображаю как это сделать... вроде сообразил. Попробую, но не сейчас. Если вопросы возникнут, то напишу. А Вы, мадемуазель граффити, профессионал наверное?
мисс_граффити
только учусь... smile.gif
Rus1
на кого?
мисс_граффити
на программиста.
но это уже явный оффтоп.
Rus1
что такое оффтоп я не знаю, просто было интересно
мисс_граффити
оффтоп - разговор не по теме, то есть никак не подходящий под заголовок.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.