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

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

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

> Соединить точки на плоскости ломаной, (переименовано)
CormiX
сообщение 27.12.2009 9:50
Сообщение #1


Новичок
*

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

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


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

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

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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
Ответов(1 - 19)
Lapp
сообщение 27.12.2009 10:09
Сообщение #2


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

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

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


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


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


Гуру
*****

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

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


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

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

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


Новичок
*

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

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


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

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


Гуру
*****

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

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


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


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

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

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


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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
CormiX
сообщение 27.12.2009 12:20
Сообщение #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 - 27.12.2009 12:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.12.2009 12:23
Сообщение #8


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

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

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


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


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


Новичок
*

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

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


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

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


или как?

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


Гуру
*****

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

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


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

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


Новичок
*

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

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


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

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

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


Гуру
*****

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

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


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


Новичок
*

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

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


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


Гуру
*****

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

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


Если речь идет о НЕЗАМКНУТОЙ ломаной, то между n точками у тебя получится n-1 звеньев ломаной.
Но вводишь то ты точки.
И, кстати, у точек на плоскости две координаты, а не одна.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
CormiX
сообщение 27.12.2009 13:59
Сообщение #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 - 27.12.2009 16:06
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 27.12.2009 16:44
Сообщение #16


Гуру
*****

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

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


А теперь объясни, для чего нужна каждая строчка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
CormiX
сообщение 27.12.2009 16:53
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.12.2009 16:56
Сообщение #18


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

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

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


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

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


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


Новичок
*

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

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


Я думал i,j это обозначение точки массива, но он линейный а не матрица = / туплю блин.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.12.2009 17:02
Сообщение #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 - 27.12.2009 17:05


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

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

 



- Текстовая версия 21.06.2025 15:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"