Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Задача про квадранты. Паскаль


Автор: XenOS12 27.1.2014, 10:30
Есть задачка: "На плоскости задана прямоугольная система координат с осями X и Y, которая делит плоскость на 4 квадранта. Составить программу, которая вводит координаты точки (x,y) и сообщает, в каком квадранте (четверти) или на какой оси расположена точка."

Я вот что сочинил, но условие задачи не до конца выполнил, да и коряво вообще вышло:

Код

program kvadrant;
var
  x,y:real;
begin
  writeln('Введите координаты x и y'); readln(x,y);
  if (x>0) and (y>0) then writeln('1й квадрант')
    else if (x<0) and(y>0) then writeln('2й квадрант')
      else if (x<0) and (y<0) then writeln('3й квадрант')
  else writeln('4й квадрант');
end.


Думаю, тут через case нужно делать? Или как?

Автор: Агрох 27.1.2014, 11:16
Самое простое это через конструкции if then else if ... описать все возможные варианты.

Автор: XenOS12 27.1.2014, 11:26
Цитата(Агрох @ 27.1.2014,  11:16)
Самое простое это через конструкции if then else if ... описать все возможные варианты.

Так я думаю, что задача дается для нахождения более рационального метода расчета. Не может же решением задачи быть что-то типа:
Код

begin
if then;
if then;
if then;
if then;
if then;
if then;
if then;
if then;
if then;
if then;
end.

Автор: Агрох 27.1.2014, 13:10
А как ещё? Вам в любом случае надо вывести надписи '1й квадрант, '2й квадрант','3й квадрант','4й квадрант' и прочие, когда точка на оси. И на вывод каждой надписи - своя проверка условия.

Можно уменьшить количество операций сравнения за один прогон. Например так:
Код

if x > 0 then
    if y > 0 then
      ShowMessage('1-й')
    else
      if y = 0 then
        ShowMessage('ось X справа')
      else
        ShowMessage('4-й')
  else
    if x = 0 then
      if y > 0 then
        ShowMessage('ось Y верх')
      else
        if y = 0 then
          ShowMessage('Центр')
        else
          ShowMessage('ось Y низ')
    else
      if y > 0 then
        ShowMessage('2-й')
      else
        if y = 0 then
          ShowMessage('Ось X лево')
        else
          ShowMessage('3-й');


Не более 3-х операций сравнения за один проход.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)