![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Witaliy |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 43 Пол: Мужской Реальное имя: Witaliy Репутация: ![]() ![]() ![]() |
Даны координаты конца и начала отрезка (целочиселные координаты) Нужно найти количество точек с целочиселными координатами, что лежат на отрезке:
Пример: 0 0 3 3 Ответ: 4. Две точки как минимуи должны быть. Спасибо |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
По 2-м точкам можно получить уравнение прямой. Далее циклом от маньшего x к большему, вызываешь f(x) и проверяешь на целочисленность.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
amega |
![]()
Сообщение
#3
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
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.
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
amega, и что? А я ввел (0, 0) - (6, 3), должны быть 3 точки, что печатает твоя программа?
|
amega |
![]()
Сообщение
#5
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата А я ввел (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 - |
TarasBer |
![]()
Сообщение
#6
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
amega, неоптимально очень...
klem4 предложил лучше Но на самом деле там надо найти НОД алгоритмом Евклида и прибавить к нему единицу. -------------------- |
amega |
![]()
Сообщение
#7
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Но на самом деле там надо найти НОД алгоритмом Евклида и прибавить к нему единицу. мм а можно код глянуть или где про ето можно почитать |
Ozzя |
![]()
Сообщение
#8
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 20.04.2025 12:59 |