Показать сообщение отдельно

  #457  
Старый 28.04.2008, 23:55
l1ght
Reservists Of Antichat - Level 6
Регистрация: 05.12.2006
Сообщений: 195
С нами: 10227206

Репутация: 2163
По умолчанию

Цитата:
Сообщение от krypt3r  
Omg, вы тут уже несколько страниц решаете простое квадратное уравнение :-d
Garfi, хоть ты и клянешься, что математику хорошо знаешь, эта ссылка (http://www.math.ru/dic/37) + элементарные размышления скажут тебе, что /2*a - неверное переложение формулы на код языка програмирования. Верные - /(2*a), /2/a, /a/2.
Код:
program Sqrt1;

var
  A, B, C, D, X1, X2 : Real;

begin
  Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
  Readln (A, B, C);
  D := B * B - 4 * A * C;
  if A <> 0 then begin
    if D < 0 then
      Writeln ('Kornei net! ')
    else begin
      X1 := (-B + sqrt (D)) / 2 / A;
      X2 := (-B - SQRT (D)) / 2 / A;
      if X1 <> X2 then
        writeln ('X1=', X1 : 8 : 3, ' X2=', X2 : 8 : 3)
      else
        writeln (' Koren ODIN ','X=',X2:8:3)
    end;
  end else
    writeln('Reshenii net');
//Readln;
end.
Смотрите код внимательно, че вы тут написали. Если а не равно нулю, выполнить код, иначе написать "Решений нет"? о_О Если х1 = х2, то корень один? Верно, только не так надо, а сравнивая дискриминант с нулем. Но это мелочь.
Не совсем вижу смысл обрабатывать введенные данные при а = 0, ибо это уже не квадратное уравнение, а линейное, но раз уж просите, то вот код, и без комплексных чисел.
Код:
program Sqrt1;

var
  A, B, C, D, X1, X2 : Real;

begin
  Writeln ('Vvedite koificenti kvodratnogo uravnenia ');
  Readln (A, B, C);
  ///writeln (a : 8 : 3, ' * x^2 ', b : 8 : 3, ' * x ', c : 8 : 3);
  if A <> 0 then begin
    D := B * B - 4 * A * C;
    if D < 0 then
      Writeln ('Kornei net! ')
    else if D > 0 then begin
      X1 := (-B + sqrt (D)) / 2 / A;
      X2 := (-B - SQRT (D)) / 2 / A;
      writeln ('X1=', X1 : 8 : 3, ' X2=', X2 : 8 : 3);
    end
    else
      writeln ('X = ', (-B / 2 / A) : 8 : 3);
  end else
    writeln ('Lineinoe uravnenie. Koren X = ', (-C / B): 8 : 3);

//Readln;
end.
вы не задумывались почему a<>0 ? =) зачем изобретать велосипед, достаточно выполнить основные условия задачи. В частности когда а и б = 0 вылезет ошибка деления на 0 =)

Последний раз редактировалось l1ght; 12.01.2010 в 01:57..
 
Ответить с цитированием