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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2009, 18:09   #1
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию проблемы с головой - ОПЕРАТОРЫ УСЛОВИЯ

Даны числа a1, b1, c1, a2, b2, c2. Найти координаты точки пересечения прямых a1·x+b1·y=c1 и a2·x+b2·y=c2, либо сообщить, что эти прямые совпадают или не пересекаются.
Помогите доделать
исключить все случаи =0
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;
var a1,b1,c1,a2,b2,c2:integer;
x,y:real;
begin
randomize;
writeln('a1,b1,c1,a2,b2,c2=');
readln(a1,b1,c1,a2,b2,c2);
  if(b1=0) and (b2=0) then
  begin
  x:= (c1 - c2)/(a1 - a2);
  y:=random(30); writeln( x,y);
  end else
if (a1=0) and (a2=0) then
  begin
  y:= (c1-c2)/(b1-b2);
  x:=random(20);
  end;

  if (a1/b1=a2/b2) then
                   if (c1/b1=c2/b2) then writeln('Sovpadaut')
                           else writeln('Paralelnu')
else
begin
y:=(a1*c2-a2*c1)/(a1*b2-a2*b1);
x:=(c1*b2-b1*c2)/(a1*b2-a2*b1);
       writeln('peresekayutsya,a_tochka_peresechenia_C(',x:0:2,',',y:0:2,')');
end;
readln;
end.
Asira вне форума Ответить с цитированием
Старый 21.12.2009, 19:02   #2
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию



Код:
program Project12;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  A1, B1, C1, A2, B2, C2, Det: Integer;
  X, Y: Real;
begin
  WriteLn('Введите коэффициенты для первой прямой');
  ReadLn(A1, B1, C1);
  WriteLn('Введите коэффициенты для второй прямой');
  ReadLn(A2, B2, C2);
  Det := A1 * B2 - A2 * B1;
  if Det = 0 then
    if (A1 = A2) and (B1 = B2) and (C1 = C2) then
      WriteLn('Прямые совпадают')
    else
      WriteLn('Прямые не пересекаются')
  else
  begin
    X := (B1 * (-C2) - B2 * (-C1)) / Det;
    Y := ((-C1) * A2 - (-C2) * A1) / Det;
    WriteLn('Точка пересечения: X = ', X:4:4, ', Y = ', Y:4:4);
  end;
  ReadLn;
  ReadLn;
end.

Последний раз редактировалось Alex_FF; 21.12.2009 в 19:12.
Alex_FF вне форума Ответить с цитированием
Старый 21.12.2009, 19:21   #3
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

А как же параллельность?!!!!!!!
Asira вне форума Ответить с цитированием
Старый 21.12.2009, 19:32   #4
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Цитата:
Сообщение от Asira Посмотреть сообщение
А как же параллельность?!!!!!!!
ну если прямые не пересекаются, и не совпадают, то они, ясное дело, параллельны! Мы же не в N-мерном пространстве, а на плоскости.

ну напишите тогда уж вместо WriteLn('Прямые не пересекаются') так: WriteLn('Прямые параллельны')
Просто у вас в условии написано, что надо сообщить если они не пересекаются или если совпадают...

Последний раз редактировалось Alex_FF; 21.12.2009 в 19:35.
Alex_FF вне форума Ответить с цитированием
Старый 21.12.2009, 19:53   #5
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Ладнось спасибо огромное!!!!!!!!!!!!!!!
Хватит я надеюсь случая пересечения прямых на плоскости............
Asira вне форума Ответить с цитированием
Старый 22.12.2009, 16:21   #6
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

АААААА это прога не правильно работает
когда пишешь коэффициенты 1 2 3 2 4 6 ....... она пишет пересекаются хотя прямые совпадают..........
Asira вне форума Ответить с цитированием
Старый 22.12.2009, 16:39   #7
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Думаю что правильнее будет так
Код:
{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  a1, b1, c1, a2, b2, c2, opredelitel: Integer;
  X, Y: Real;
begin
  WriteLn('Vvedite koeff a1,b1,c1,a2,b2,c2');
  ReadLn(a1, b1, c1,a2,b2,c2);
opredelitel := a1 * b2 - a2 * b1;
  if opredelitel = 0 then
      if (a1/b1=a2/b2) then
                   if (c1/b1=c2/b2) then writeln('Sovpadaut')
else
      WriteLn('Prjamue ne peresekautsja')
  else
  begin
    X := (b1 * c2 - b2 * c1) / opredelitel;
    Y := (c1 * a2 - c2 * a1) / opredelitel;
    Writeln('Tochka peresechenija: X = ', X:1:3, ', Y = ', Y:2:2);
  end;
  Readln;
  Readln;
end.
Asira вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операторы условия и выбора Asira Помощь студентам 0 20.12.2009 22:11
Операторы условия, Паскаль RRRRRR Помощь студентам 3 19.11.2009 18:51
Гляньте свежей головой ктонить! Плиз... Samopal Паскаль, Turbo Pascal, PascalABC.NET 2 21.04.2009 17:35
Операторы цикла Paul Oakenfold Паскаль, Turbo Pascal, PascalABC.NET 1 08.04.2009 16:02