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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Соединить точки на плоскости ломаной, (переименовано)
сообщение
Сообщение #1


Новичок
*

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

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


Всем доброго времени суток. На практической я имел возможность ознакомиться вот с такой задачкой:
Задано N точек на плоскости. Вычислить (N-1) не замкнутую ломаную кривую, которая проходит через все эти точки и не пересекает себя. Соседние отрезки ломаной могуть лежать на одной прямой.

Буду очень признателен, если поможете решыть задачку. И если вас не затруднит то напишыте кодом Turbo Pascal. Зарание спасибо!

М
Ну при чем тут многострадальный массив?? Хватит уже все валить на него.. В следующий раз вдумчивее подходи к названию темы.
Переименовано. Lapp

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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Упорядочи их по возрастанию одной какой-то координаты (например, X) и соединяй в этом порядке. Если встретятся несколько подряд с одинаковым X, то внутри этой группы упорядочивай по Y.
Цитата(CormiX @ 27.12.2009 9:50) *
И если вас не затруднит то напишыте кодом Turbo Pascal.
угу, и положЫте на блюдечко с голубой каемочкой..
Когда покажешь свои успехи в этой области - тогда поможем.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Пока читал первый пост, естественно, пришел в голову алгоритм решения.
Прочитав второй, понял, что мое решение является частным случаем описанного в нем, только для полярной системы координат.

PS. Кстати, этот вариант подходит и для замкнутых ломаных.

Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


У меня практическая по массивам, и там была эта задачка....вот почему я хочу решить е с помощью массива.

Сообщение отредактировано: CormiX -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Да, массив - наиболее подходящая структура данных для этой задачи.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(CormiX @ 27.12.2009 11:11) *
У меня практическая по массивам, и там была эта задачка....вот почему я хочу решить е с помощью массива.
Разумеется, с помощью массива. Но 99% задач решаются с помощью массивов (я говорю про учебные, производственные все 100%). Это все равно, что на форуме о русском языке назвать тему "слова". Старайся выразить в названии ТО, что тебе надо сделать. В подзаголовке уместно сказать, что желательно использовать. Если хочешь, добавь сейчас в подзаголовок этой темы (который у тебя был пустым, и я его пустым поэтому оставил) слово "массивы".
Ты пройдись по форуму, найдешь ТЫСЯЧИ тем, названых "Массивы". По-твоему это помогает поиску?.. А для чего еще заголовок, если не для этого?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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



const n=100;
var a:array[1..n] of real;
i:integer;
begin
write('i=');
readln(i);
for i:=1 to n-1 do
begin



только вот не знаю что дальше)

Сообщение отредактировано: CormiX -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(CormiX @ 27.12.2009 12:20) *
только вот не знаю что дальше)
Уже хорошо!
Теперь ответь: как ты хочешь получать сам набор координат точек: вводом с клавиатуры или случайным образом (то есть без ввода)?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Нужно чтоб я сам вводил числа.

...
write('n:=');
...


или как?

Сообщение отредактировано: CormiX -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


i у тебя целая переменная, используемая в качестве переменной цикла. Во-первых, ты хочешь вводить вещественные значеия в массив, а во-вторых, значение i у тебя затирается (уничтожается) при организации цикла. Так что ты хочешь сделать?

Еще раз советую: сначал опиши алгоритм по-русски, и только потом пыайся перевести его на Паскаль.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


Запутался я чето)
Ну следуйщий шаг надо записать числа массива так?

for i:=1 to n-1 do
begin
write('a[',i,']=');
readln(a[i]);
end;

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


В принципе верно, только почему у тебя цикл проходит n-1 раз вместо n?
Обычно либо массив нумеруют с 0 и тогде последний элемент имеет индекс n-1, либо с 1 и тогда индекс последнего элемента n.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


А у меня в задании ломаная N-1, ето не то?)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Если речь идет о НЕЗАМКНУТОЙ ломаной, то между n точками у тебя получится n-1 звеньев ломаной.
Но вводишь то ты точки.
И, кстати, у точек на плоскости две координаты, а не одна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

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

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


Я продвинулся до этого:

const n=100;
var a:array[1..n] of real;
i,j:integer;
begin
write('i=');
readln(i);
write('j=');
readln(j);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
for j:=1 to n do
write('a[',j,']=');
readln(a[j]);
end;

Так? Ктонить отзовитесь!)

Сообщение отредактировано: CormiX -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


А теперь объясни, для чего нужна каждая строчка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

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

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


 
const n=100; задаем N
var a:array[1..n] of real; задаем массив и переменные
i,j:integer;
begin
write('i='); 1-я координата
readln(i);
write('j='); 2-я (ну ето есл я правильно понимаю)
readln(j);
for i:=1 to n do запускаем цикл
begin
write('a[',i,']='); задаем массив
readln(a[i]);
for j:=1 to n do
write('a[',j,']=');
readln(a[j]);
end;


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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(CormiX @ 27.12.2009 13:59) *
Так? Ктонить отзовитесь!)

Не так..
Ответь на вопрос andriano, плз. Или хотя бы объясни, зачем ты вводишь значения для переменных i и j.
Что ты хотел этим сказать? Они же затираются потом, как переменные циклов..
И зачем тебе два цикла? Вводи одно число (число точек), а потом в цикле вводи для каждой точки в цикле координаты x и y.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

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

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


Я думал i,j это обозначение точки массива, но он линейный а не матрица = / туплю блин.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Попробуй разобраться.
const
m=100; // задаем максимально возможное число точек
var
x,y: array[1..m] of real; // определяем массивы координат
i,n: integer;
begin
write('n='); // вводим реальное число точек
readln(n);
for i:=1 to n do begin
write('x[',i,']=');
readln(x[i]);
write('y[',i,']=');
readln(y[i]);
end
end.



(исправил)

Сообщение отредактировано: Lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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