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

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

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

Автор: Rus1 18.10.2006 1:25

Такая вот проблема.
Вот у нас ось X. Она при любых условиях на одном уровне - внизу экрана.
А вот ось Y. Она должна быть после определенного количества отрицательных значениях X, но перед положительными X.
Попробую всё это изобразить, как картинку вставить не знаю, поэтому попробую так (восклицательными знаками отмечены значения X, как положительные, так и отрицательные).


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


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

Автор: Michael_Rybak 18.10.2006 1:45

А в чем задача? Найти экранную x-координату, через которую проходит ось y? Сформулируй, в каких координатах записаны отметки на оси х, и как ты их масштабируешь на экран. И скажи, что дано, и что посчитать.

Вообще, как я понял, проще всего взять список всех х'ов, отсортировать, посмотреть за 1 проход, есть ли там 0, и если нет - вставить на нужное место

Автор: мисс_граффити 18.10.2006 1:59

с тупоумными компами не сталкивалась, к сожалению, так что особенностей работы с ними не знаю.
как может не быть нуля - тоже слабо понимаю, если есть положительные и отрицательные элементы. Даже если 0 не задан в явном виде (х - это элементы массива?).
Масштаб какой-то берешь для отмечания х? вот и отсчитываешь, где предположительно находится ноль.

Автор: Rus1 18.10.2006 2:14

Так, по-видимому меня не поняли. Предположим, что программа уже готова. Пользователь вводит значение n (количество значений x), затем поочередно вводит x[1], x[2],..., x[n]. Эти значения могут быть как положительными, так и отрицательными и могут равняться нулю. Всё понятно?
Как сделать так, чтобы ось Y находилась после всех отрицательных значений и перед положительными? Масштаб здесь не важен, т.е., например, расстояние от x[1]=1 до x[2]5 будет равно расстоянию от x[2]=5 до x[3]=100.

Автор: мисс_граффити 18.10.2006 2:31

пользователь их вводит по порядку? или вперемешку?

Автор: Rus1 18.10.2006 2:37

вперемешку, но программа потом упорядочит

Автор: мисс_граффити 18.10.2006 2:39

ну пусть вставляет 0, когда будет упорядочивать.
или как только при рисовании обнаружит число >=0, нарисует ось y.
или, раз все равно масштаб не соблюдаешь, рисуй по центру, а остальные лепи как получится.

Автор: Rus1 18.10.2006 2:57

Соображаю, соображаю как это сделать... вроде сообразил. Попробую, но не сейчас. Если вопросы возникнут, то напишу. А Вы, мадемуазель граффити, профессионал наверное?

Автор: мисс_граффити 18.10.2006 3:01

только учусь... smile.gif

Автор: Rus1 18.10.2006 3:02

на кого?

Автор: мисс_граффити 18.10.2006 3:08

на программиста.
но это уже явный оффтоп.

Автор: Rus1 18.10.2006 3:12

что такое оффтоп я не знаю, просто было интересно

Автор: мисс_граффити 18.10.2006 3:14

оффтоп - разговор не по теме, то есть никак не подходящий под заголовок.