Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 20:53   #1
Helen236
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 23
По умолчанию Пересечение отрезков

Помогите пожалуйста решить эту СЛОЖНУЮ задачу
Даны N отрезков прямой. Найти длину общей части всех этих отрезков.

Формат входных данных
Вводится сначала число N (1<=N<=100). Далее воодится N пар чисел, задающих координаты левого и правого концов каждого отрезка. Все координаты - числа из диапазона от 0 до 30000. Левый конец отрезка всегда имеет координату строго меньшую, чем правый.

Формат выходных данных
Выведите длину общей части этих отрезов. Если у всех этих отрезков общей части нет, выведите 0.
Helen236 вне форума Ответить с цитированием
Старый 05.04.2012, 21:01   #2
vovken1997
Дружелюбный
Форумчанин
 
Аватар для vovken1997
 
Регистрация: 23.02.2012
Сообщений: 692
По умолчанию

Helen236, небось в школе задали??? Отрезок, это гипотенуза прямоугольного треугольника, катеты даны, расчитай по теореме пифагора и сложи длины всех отрезков.
-==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
vovken1997 вне форума Ответить с цитированием
Старый 05.04.2012, 21:03   #3
Helen236
Пользователь
 
Регистрация: 05.04.2012
Сообщений: 23
По умолчанию

Дело в том, что задали в лингвистическом универе, а с математикой как-то не очень у меня!!!!
Helen236 вне форума Ответить с цитированием
Старый 05.04.2012, 21:11   #4
vovken1997
Дружелюбный
Форумчанин
 
Аватар для vovken1997
 
Регистрация: 23.02.2012
Сообщений: 692
По умолчанию

А в чем именно проблема? Создайте массив где будете хранить все координаты. Из координаты правого x вычте координату левого x, точно так же с y и получите величины двух катетов, далее квадрат одного катета плюс квадрат второго и осталось сложить все гипотенузы.
-==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
vovken1997 вне форума Ответить с цитированием
Старый 05.04.2012, 22:16   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Если я правильно понял условие задачи, то:
Код:
uses CRT;

var
  n,i,l,r,a,b:integer;

begin
  clrscr;
  writeln('Input n:');
  readln(n);
  l:=-1;
  r:=30001;
  for i:=1 to n do
  begin
    writeln('Input ',i,' pair:');
    readln(a,b);
    if a>l then
      l:=a;
    if b<r then
      r:=b;
  end;
  if r<l then
    write(0)
  else
    write(r-l);
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 05.04.2012, 22:56   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Отрезок, это гипотенуза прямоугольного треугольника, катеты даны, расчитай по теореме пифагора и сложи длины всех отрезков
Вы вообще серьёзно?!
Какие гипотенузы, какие катеты?!!?!
Эк Вас торкнуло то!!
На одной прямой заданы отрезки. нужно найти их общую часть (часть, которая принадлежит ВСЕМ отрезкам!)


BDA, остроумное, эффективное и корректное решение! браво!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.04.2012, 10:20   #7
Paster Fob
Форумчанин
 
Аватар для Paster Fob
 
Регистрация: 06.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Если я правильно понял условие задачи, то:
Код:
uses CRT;

var
  n,i,l,r,a,b:integer;

begin
  clrscr;
  writeln('Input n:');
  readln(n);
  l:=-1;
  r:=30001;
  for i:=1 to n do
  begin
    writeln('Input ',i,' pair:');
    readln(a,b);
    if a>l then
      l:=a;
    if b<r then
      r:=b;
  end;
  if r<l then
    write(0)
  else
    write(r-l);
  readln;
end.
Я решаю многие задания,но вот такие,не могу.Даже никаких мыслей нет.
Зачем автор решения присвоил l:=-1?в задании сказано же от 0.
Paster Fob вне форума Ответить с цитированием
Старый 06.04.2012, 10:20   #8
Paster Fob
Форумчанин
 
Аватар для Paster Fob
 
Регистрация: 06.02.2011
Сообщений: 105
По умолчанию

Сложно всё это.

Последний раз редактировалось Paster Fob; 06.04.2012 в 10:25.
Paster Fob вне форума Ответить с цитированием
Старый 06.04.2012, 12:01   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Paster Fob, при поиске максимумов или минимумов положено инициализировать переменную крайним значением (при поиске минимума максимально возможным числом, при поиске максимума наоборот). Здесь указаны крайние значения 0 и 30000. Так как эти числа помещаются в диапазон integer, то можно взять на всякий случай с запасом. Затем просто ищем максимум среди левых границ и минимум среди правых границ. Можно присвоить l=0 и r=30000, но так l и r (при l=-1 r=30001) инициализируются считанными значениями в любом случае (дело вкуса). Главное - не взять границы меньше диапазона возможных значений.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 06.04.2012, 12:08   #10
Paster Fob
Форумчанин
 
Аватар для Paster Fob
 
Регистрация: 06.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Paster Fob, при поиске максимумов или минимумов положено инициализировать переменную крайним значением (при поиске минимума максимально возможным числом, при поиске максимума наоборот). Здесь указаны крайние значения 0 и 30000. Так как эти числа помещаются в диапазон integer, то можно взять на всякий случай с запасом. Затем просто ищем максимум среди левых границ и минимум среди правых границ. Можно присвоить l=0 и r=30000, но так l и r (при l=-1 r=30001) инициализируются считанными значениями в любом случае (дело вкуса). Главное - не взять границы меньше диапазона возможных значений.
ясно всё,спасибо за разъяснения.
Paster Fob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler: проверить пересечение двух отрезков MaxYch Помощь студентам 0 05.10.2011 21:53
Координаты отрезков MaxPeine C++ Builder 0 18.05.2011 22:48
C++ Пересечение отрезков Liza Dalbek Помощь студентам 2 22.12.2010 23:20
Пересечение отрезков. Векторное произведение phpcreator Помощь студентам 2 23.06.2010 21:58
Пересечение отрезков Пaвeл Помощь студентам 1 30.04.2010 05:46