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

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

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

 
 Ответить  Открыть новую тему 
> Отрезок
сообщение
Сообщение #1


Новичок
*

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

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


Даны координаты конца и начала отрезка (целочиселные координаты) Нужно найти количество точек с целочиселными координатами, что лежат на отрезке:
Пример: 0 0 3 3
Ответ: 4.

Две точки как минимуи должны быть.

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


Perl. Just code it!
******

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

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


По 2-м точкам можно получить уравнение прямой. Далее циклом от маньшего x к большему, вызываешь f(x) и проверяешь на целочисленность.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


?
***

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

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



program _1_;
var
i:integer;
j:integer;
x1,x2,y1,y2,k,a,b:integer;
begin

{ сюда впихуеш ввод х1. х2 ...}

k:=0;
a:=x2-x1;
b:=y2-y1;
for i:=x1 to x2 do
for j:=y1 to y2 do
if (a*(j-y1)) = (b*(i-x1)) then k:=k+1;
writeln(k);
readln;
end.


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


Гость






amega, и что? А я ввел (0, 0) - (6, 3), должны быть 3 точки, что печатает твоя программа?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


?
***

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

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


Цитата
А я ввел (0, 0) - (6, 3), должны быть 3 точки, что печатает твоя программа?


0,0 2,1 4,2 6,3 - 4 точки

Добавлено через 4 мин.
я проверил перед тем как выкладивать


program _1_;
var
i:integer;
j:integer;
x1,x2,y1,y2,k,a,b:integer;
begin

x1:=0;
x2:=6;
y1:=0;
y2:=3;
k:=0;
a:=x2-x1;
b:=y2-y1;
for i:=x1 to x2 do
for j:=y1 to y2 do
if (a*(j-y1)) = (b*(i-x1)) then k:=k+1;
writeln(k);
readln;
end.



у меня выдает 4 можу скриншоты зделать если не вереш

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


Злостный любитель
*****

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

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


amega, неоптимально очень...
klem4 предложил лучше
Но на самом деле там надо найти НОД алгоритмом Евклида и прибавить к нему единицу.


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


?
***

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

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


Цитата
Но на самом деле там надо найти НОД алгоритмом Евклида и прибавить к нему единицу.


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


Гуру
*****

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

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


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

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

 





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