TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 1.5. Решить квадратное уравнение ax2+ bx + c = 0.
 
  Система тестов
 
Номер теста Проверяемый случай Коэффициенты Результаты
a b c
1 d >0 1 1 -2 x1 = 1,   x2 =  - 2
2 d=0 1 2 1 Корни равны:  x1 = - 1,   x2 =  - 1
3 d < 0 2 1 2 Действительных корней нет
4 a=0,   b=0,   c=0 0 0 0 Все коэффициенты равны нулю.   х — любое число.
5 a=0,   b=0,   c<>0 0 0 2 Неправильное уравнение
6 a=0,   b<>0 0 2 1 Линейное уравнение.   Один корень:   x = - 0,5
7 a <> 0,   b <> 0,   с = 0 2 1 0 x1 = 0,   x2  =  - 0,5

 

Демонстрация
 
Школьный АЯ (упрощенный алгоритм)
алг Квур (арг вещ а, b, c, рез вещ x1, x2, рез лит t)
   дано a <> 0
нач вещ d
  d := b**2-4*a*c | d - дискриминант квадратного уравнения
  если d<0
    то t := "Действительных корней нет"
    иначе если d=0
            то t := "Корни равны"; x1 := -b/(2*a); x2 := x1
            иначе t := "Два корня"
                  x1 := (-b + sqrt(d)) / (2*a)
                  x2 := (-b - sqrt(d)) / (2*a)
          все
  все
кон
 
Turbo Pascal
Program QuadraticEquation;
  Uses Crt; { подключение библиотеки Crt }
  Var a, b, c     : Real;         {a, b, c - коэффициенты уравнения}
      Discr       : Real;
      x1, x2      : Real;         {x1, x2 - корни }
      Test, NTest : Integer;      {Ntest - количество тестов }
BEGIN
  ClrScr;
  Write('Введите количество тестов : ');
  ReadLn(NTest);
  For Test := 1 to NTest do {цикл по всем тестам задачи }
   begin
    Write('Тест ', Test, '. Введите коэффициенты a, b, c : ');
    ReadLn(a, b, c);
    If (a=0) and (b=0) and (c=0)
     then begin Write('Все коэффициенты равны нулю.');
                WriteLn('x - любое число ')
          end
     else
      If (a=0) and (b<>0)
       then WriteLn('Линейное уравнение. Oдин корень: x =', (-c/b):6:2)
       else
        If (a=0) and (b=0) and (c<>0)
          then WriteLn('Неправильное уравнение.')
          else
           begin
            Discr := b*b - 4*a*c;
            If Discr > 0 
             then begin
                    x1:=(-b + Sqrt(Discr)) / (2*a);
                    x2:=(-b - Sqrt(Discr)) / (2*a);
                    WriteLn('x1=' , x1:6:2 , '; x2=' , x2:6:2)
                  end
             else
              If Discr = 0
               then begin
                      x1 := -b/(2*a); 
                      WriteLn('Корни равны: x1=', x1:6:2, ' x2=', x1:6:2)
                    end
               else WriteLn('Действительных корней нет.');
          end; 
      WriteLn      
    end; 
  ReadLn
END.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz