Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > КВадратное уравнение


Автор: Baxy 12.11.2004, 20:14
Код
Program N3;  
var  
A,B,C: Real;  
X1,X2: Real;  
D: Real;  
begin  
Writeln('Программа решения квадратных уравнений. Welcome!');  
Write('Введите A: ');  
Readln(A);  
if A = 0 then  
begin  
Write('Нельзя, чтобы A было равно нулю!');  
Readln;  
Halt;  
end;  
Write('Введите B: ');  
Readln(B);  
Write('Введите C: ');  
Readln©;  
Writeln('Решаем уравнение: ',A:5:2,'x^2 +',B:5:2,'x +',C:5:2,' = 0');  
Writeln;  
D := B*B-(4*A*C);  
if D < 0 then  
begin  
Write('D меньше нуля! Так нельзя...');  
Readln;  
Halt;  
end;  
X1 := (B*-1) + sqrt(D);  
X1 := X1 / (2*A);  
X2 := (B*-1) - sqrt(D);  
X2 := X2 / (2*A);  
Writeln('D: ',D:5:2);  
Write('X1: ',X1:5:2, ' X2: ',X2:5:2);  
Readln;  
end.

Автор: p0s0l 12.11.2004, 20:40
И что с этим надо сделать ?

Автор: p0s0l 12.11.2004, 20:41
Перенесено из раздела Дельфи

Автор: MacTep 13.11.2004, 00:48
Цитата
И что с этим надо сделать ?
Любоваться на красивый код!!! smile

Автор: Pakshin A. S. 13.11.2004, 12:38
Кстати не очень-то красиво...
1) При a = 0 мы емеем одно решение уравнения.
2) при D = 0 мы имеет одно решение, а у него два.

Автор: Pakshin A. S. 13.11.2004, 13:01
Вообще вся эта патеха должна быть так:
Код

Program N3;  
var  
 A,B,C: Real;  
 X1,X2: Real;  
 D: Real;  
begin  
 Writeln('Программа решения квадратных уравнений. Welcome!');  
 Write('Введите A: ');  
 Readln(A);  
 Write('Введите B: ');  
 Readln(B);  
 Write('Введите C: ');  
 Readln(C);  
 Writeln('Решаем уравнение: ',A:5:2,'x^2 +',B:5:2,'x +',C:5:2,' = 0');  //  ещё эта строка не очень красива...
 Writeln;  
 Write('Ответ: ');
 if a = 0
  then
   writeln((-С)/B:5:2)
  else
   begin
    D := B*B-(4*A*C);  
    if D < 0 then  
      Write('Решений нет')
     else
      if D = 0
       then
        write((-1)*B/(2*A):5:2)
       else
         write(((-1)*B + sqrt(D))/(2*A):5:2, ' и ', ((-1)*B - sqrt(D))/(2*A):5:2);
Readln;  
end.

Автор: New Invision Master 13.11.2004, 15:25
Ошибка!
Код

writeln((-С)/B:5:2)


Автор: New Invision Master 13.11.2004, 15:35
Вот файлы:

http://programsnew.u9.ru/sources/kvura.pas
http://programsnew.u9.ru/sources/kvura.exe

Автор: Pakshin A. S. 13.11.2004, 18:53
Обломись!!!! Строка абсолютно правильная!!!

вот такой код
Код

writeln(9/5:5:2)

выведет на экран
следующее:
Цитата

1.80

Это - ФОРМАТИРОВАННЫЙ ВЫВОД значений типа real!


Проверено да консоли от Delphi7 и TP for Win.

Автор: Pakshin A. S. 13.11.2004, 19:19
Модернизированный вариант:
Код

var
A,B,C:real;
D:real;
f:boolean;
begin
writeln('Решение уравнения типа Ax*x+B*x+C=0');
writeln;
write('Введите коэффициенты уравнения через пробел -> ');
read(A,B,C);
readln;
writeln('Имеем уравнение:');
f:=false;
if A <> 0
 then
  begin
   write(A:5:2, 'x*x');
   f:=true;
  end;
if (B > 0) and f
 then
  write('+');
if B <> 0
 then
  begin
   f:=true;
   write(B:5:2,'*x');
  end;
if (C > 0) and f
 then
  write('+');
if C <> 0
 then
  write(C:5:2);
if (A+B+C) = 0
 then
  write('0');
writeln('=0');
if (A = 0) and (b <> 0)
 then
  writeln('Ответ: x=', (-C)/B:5:2)
 else
  if (A = 0) and (b = 0)
   then
    begin
     writeln('Ответ: число x - отсутствует в уравнении');
     if C <> 0
      then
       writeln('            получено неверное тождество')
      else
       writeln('            получено верное тождество');
    end
   else
    begin
      D:=sqr(B) - 4*A*C;
      writeln('D = ',D:5:2);
      write('Ответ: ');
      if D < 0
       then
        writeln('х не существует')
       else
        if D = 0
         then
          writeln('x = ', (-B)/(2*A):5:2)
         else
          writeln('x принадлежит {',((-B)+sqrt(D))/(2*A):5:2,';',((-B)-sqrt(D))/(2*A):5:2,'}');
    end;
writeln;
writeln('Press <Enter>...');
readln;
end.

Автор: New Invision Master 14.11.2004, 16:46
Вот и прога!

Что за дорога!

http://programsnew.net.ru/sources/pakshin.exe

Автор: Pakshin A. S. 14.11.2004, 18:23
Цитата(New @ 14.11.2004, 17:46)
Что за дорога!

Модератор: Прошу Вас в моём разделе изъясняться конкретно!!! Безо всяких присказок!!!

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