Помощь - Поиск - Пользователи - Календарь
Полная версия: Отрезок
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Witaliy
Даны координаты конца и начала отрезка (целочиселные координаты) Нужно найти количество точек с целочиселными координатами, что лежат на отрезке:
Пример: 0 0 3 3
Ответ: 4.

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

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

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
amega, и что? А я ввел (0, 0) - (6, 3), должны быть 3 точки, что печатает твоя программа?
amega
Цитата
А я ввел (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 можу скриншоты зделать если не вереш
TarasBer
amega, неоптимально очень...
klem4 предложил лучше
Но на самом деле там надо найти НОД алгоритмом Евклида и прибавить к нему единицу.
amega
Цитата
Но на самом деле там надо найти НОД алгоритмом Евклида и прибавить к нему единицу.


мм а можно код глянуть или где про ето можно почитать
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.