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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2012, 17:21   #1
aleko05
Пользователь
 
Регистрация: 25.09.2012
Сообщений: 11
Вопрос найти ошибку в программе

Задали написать программу решения квадратного уравнения. написал. но, при запуске, она делает ошибки при a,b,c не равно 0. помогите разобраться

Код:
Program lab1;
var a,b,c,D:integer;
    x,x1,x2:real;
    begin
         writeln('a=');
         readln (a);
         writeln('b=');
         readln (b);
         writeln('a=');
         readln (c);
    if a=0 then
           if b=0 then
                  if c=0 then writeln ('любое число')
                  else writeln ('корней нет')
           else
               begin
               x:=-c/b;
               writeln('x=',x:8:3);
               end
    else
        begin
        D:=b*b-4*a*c;
        if D>=0 then
               if D=0 then
                      begin
                      x:=-b/2*a;
                      writeln('x=',x:8:3);
                      end
                      else
                          begin
                          x1:=((-b+sqrt(D))/2*a);
                          writeln('x=',x:8:3);
                          x2:=((-b-sqrt(D))/2*a);
                          writeln('x=',x:8:3);
                          end
               else
               writeln ('корней нет');
        end;
    end.
aleko05 вне форума Ответить с цитированием
Старый 07.10.2012, 17:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Какого рода ошибки?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2012, 17:29   #3
aleko05
Пользователь
 
Регистрация: 25.09.2012
Сообщений: 11
По умолчанию

семантическая, насколько я понимаю. при вводе любых чисел на a,b,c (которые подходили бы под условие D>=0) x=0.000
aleko05 вне форума Ответить с цитированием
Старый 07.10.2012, 17:33   #4
MadHamster
Пользователь
 
Аватар для MadHamster
 
Регистрация: 13.01.2011
Сообщений: 28
По умолчанию

Код:
x1:=((-b+sqrt(D))/2*a);
writeln('x1=',x1:8:3);
x2:=((-b-sqrt(D))/2*a);
writeln('x2=',x2:8:3);
MadHamster вне форума Ответить с цитированием
Старый 07.10.2012, 17:41   #5
aleko05
Пользователь
 
Регистрация: 25.09.2012
Сообщений: 11
По умолчанию

спасибо большое, это проблема отпала
но появилась другая: программа считает неправильно.
подставляю значения
а=2
b=2
c=0
считаю на бумаге. х1=0, х2=-1
считаю в программе х1=0, х2=-4
так и с другими числами
aleko05 вне форума Ответить с цитированием
Старый 07.10.2012, 17:42   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Код:
Program lab1;
var
    a,b,c,D:integer;
    x,x1,x2:real;
begin
    writeln('a=');
    readln (a);
    writeln('b=');
    readln (b);
    writeln('a=');
    readln (c);
    if a=0 then
        if b=0 then
            if c=0 then
                writeln ('любое число')
            else
                writeln ('корней нет')
        else
        begin
            x:=-c/b;
            writeln('x=',x:8:3);
        end
    else
    begin
        D:=b*b-4*a*c;
        if D>=0 then
        begin
            if D=0 then
            begin
                x:=-b/(2*a);
                writeln('x=',x:8:3);
            end
            else
            begin
                x1:=((-b+sqrt(D))/(2*a));
                writeln('x=',x1:8:3);
                x2:=((-b-sqrt(D))/(2*a));
                writeln('x=',x2:8:3);
            end
        end
        else
            writeln ('корней нет');
    end;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.10.2012, 17:57   #7
aleko05
Пользователь
 
Регистрация: 25.09.2012
Сообщений: 11
По умолчанию

огромное спасибо, очень выручили
скобки исправил, все заработало
aleko05 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти ошибку в программе (С++) Vally Помощь студентам 3 17.01.2012 18:08
Пoмoгите найти ошибку в программе izoalex Помощь студентам 10 03.12.2011 16:18
Не могу найти ошибку в программе Doomsday Помощь студентам 1 14.11.2011 18:53
Нужно найти ошибку в программе (С++) STIFFmaster_LP Помощь студентам 13 24.01.2010 00:44
Помогите найти ошибку в программе Wast Паскаль, Turbo Pascal, PascalABC.NET 2 29.12.2008 20:40