Помощь - Поиск - Пользователи - Календарь
Полная версия: Решение неравенств
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Домовой
Здравствуйте.
Хотел задать вопрос:
Есть следующе (стандартное уравнение):
ax^2+bx+c>=0
т.е. ур-е стандартного квадртаного уравнения.
Моя задача такова:
найти решения неравенства,
и просто их вывести.
Написал я следующую фенечку smile.gif:
Код

program neravenstvo;
var
   a, b, c, d, x1, x2, z: real;
begin
     write('Введите a: ');
     readln(a);
     write('Введите b: ');
     readln(b);
     write('Введите c: ');
     readln(c);
     d:=sqr(b)-4*a*c;
     if d<0 then
        begin
             writeln('хех... решений нетУ :(');
        end
       else if d>0 then
            begin
                 x1:=(-b+sqrt(d))/2*a;
                 x2:=(-b-sqrt(d))/2*a;
                 writeln;
                 writeln('Возрадуемся же... у меня 2 решения :)');
                 writeln('x1 = ',x1:2:5,' x2 = ',x2:2:5);
                 writeln;
            end
              else if d=0 then
                   begin
                   x1:=-b/(2*a);
                   writeln;
                   writeln('Решение одно');
                   writeln('x = ',x1:2:5);
                   writeln;
                   end;
          readln;
end.


Ну так вот, после показания этого ответа преподавателю,
она сказала, что все хорошо, но надо прописать еще кучу случаев, когда
выражение может получиться, а когда и вовсе нет.
То есть например к каждому случаю разобрать когда a>0
a=0 b<0 и т.п.
Ведь неравенство может быть и квадратным, а может и наоборот, ведь все зависит
от введенных человеком данных.
Вот я и хотел спросить, уважаемые господа,
какие случаи вообще могут быть?
Возможно, об этом можно почитать?
Я уже скачал 2 презентации, но обе они про квадратные уравнения,
а "смеси", к сожалению, нет нигде sad.gif((
Говорят, что возможных случаев около 14 или 20.
Если кто сможет помочь, отвалю бАлшое спасибо smile.gif))
Серега.
Shura
Позволь...
Ты говоришь:
Цитата

Есть следующе (стандартное уравнение):
ax^2+bx+c>=0

Это не уравнение, это неравенство!
Потом ты просишь:
Цитата

найти решения неравенства

А выкладываешь программу, которая все же находит КОРНИ УРАВНЕНИЯ, а не РЕШЕНИЕ НЕРАВЕНСТВА! Так что решаем то - уравнение или неравенство?
Bokul
Вот все возможные случаи, и почему-то их всего лишь 6 yes2.gif ,а не 14 blink.gif
if (a=0) and (b<>0) then линейное уровнение(x:= -c/b)
if (b=0) and (a=0) and (c<>0) then нету решений
if (b=0) and (a=0) and (c=0) then бесконечное число решений
D>0 (d - дискременант) - решаем кваратное уровнение(2 ответа)
D=0 (1 ответ)
D<0 нету решений

Уровнение вида a*x*x+b*x+c=0
Вроде все назвал...

Решение для уровнения
klem4
И зачем нужны эти проверки ? Скажи своему преподу чтобы освежил он в памяти математи за начальный курс средней школы ...

uses crt;
var
a,b,c,D,x1,x2 : single;

begin

write('a = '); readln(a);
write('b = '); readln(b);
write('c = '); readln©;

D := sqr(b) - 4 * a * c;

if D > 0 then begin

x1 := (-b + sqrt(D)) / (2 * a);
x2 := (-b - sqrt(D)) / (2 * a);

writeln('x1 = ', x1:3:1);
writeln('x2 = ', x2:3:1);
end
else if D = 0 then begin
x1 := -b / (2 * a);
writeln('x1 = ',x1:3:1);
end
else writeln('D < 0');
end.
Домовой
Нет, на самом деле проверки нужны, и обязательно.
Да, ошибся, это неравенство, но, если моя память не спит с другим,
то неравенства такого рода решаются методом приравнивания их к нулю smile.gif
Всем спасибо, очень долго работал,
проверяйте, критикуйте smile.gif
Код

program neravenstvo;

var
   a, b, c, d, x1, x2, z: real;
begin
     write('‚ўҐ¤ЁвҐ a: ');
     readln(a);
     write('‚ўҐ¤ЁвҐ b: ');
     readln(b);
     write('‚ўҐ¤ЁвҐ c: ');
     readln(c);

     if a<>0 then
       begin
         if (b=0) AND (c=0) then
           begin
             if (a<0) then writeln('x<=0')
             else writeln('x>=0')
           end
         else if (b=0) AND (c<>0) then
           begin
             if ((a<0) AND (c<0)) OR ((a>0) AND (c>0)) then
               begin
                 writeln('ЌҐв аҐиҐ­Ё©')
               end
             else if (a<0) AND (c>0) then writeln('x^2<=', ((c/a)*(-1)):0:3)
             else if (a>0) AND (c<0) then writeln('x1=', ((c/a)*(-1)):0:3, ' x2=', (c/a):0:3)
           end
         else if (b<>0) AND (c=0) then
           begin
             if (a>0) AND (b>0) then writeln('x1>=0 Ё x2>=-', (b/a):0:3)
             else if (a>0) AND (b<0) then writeln('x1>=0 Ё x2>=', ((b/a)*(-1)):0:3)
             else if (a<0) AND (b>0) then writeln('x1>=0 Ё x2<=', ((b/a)*(-1)):0:3)
             else if (a<0) AND (b<0) then writeln('x1>=0 Ё x2<=-', (b/a):0:3)
           end
         else if (b<>0) AND (c<>0) then
           begin
             d:=sqr(b)-4*a*c;
             if (d<0) then writeln('“а ў­Ґ­ЁҐ ­Ґ Ё¬ҐҐв аҐиҐ­Ё©, в Є Є Є D<0')
             else if (d>0) then
                  begin
                  x1:=((-b)+sqrt(d))/(2*a);
                  x2:=((-b)-sqrt(d))/(2*a);
                  writeln('“а ў­Ґ­ЁҐ Ё¬ҐҐв 2 Є®а­п: x1=', x1:0:3, ' Ё x2=',x2:0:3)
                  end
             else if (d=0) then writeln('“а ў­Ґ­ЁҐ Ё¬ҐҐв ®¤Ё­ Є®аҐ­м: x=', ((-b)/(2*a)):0:3)
           end


       end
     else if a=0 then
       begin
         if (b<>0) AND (c<>0) then
           begin
             if (b>0) AND (c>0) then writeln('x>=-', (c/b):0:3)
             else if (b>0) AND (c<0) then writeln('x>=', ((c/b)*(-1)):0:3)
             else if (b<0) AND (c>0) then writeln('x<=', ((c/b)*(-1)):0:3)
             else if (b<0) AND (c<0) then writeln('x<=-', (c/b):0:3)
           end
         else if (b<>0) AND (c=0) then writeln('x>=0')
         else if (b=0) AND (c<>0) then writeln('Ћвбгвбвўгов a Ё b')
         else if (b=0) AND (c=0) then writeln('‚л ­Ґ ўўҐ«Ё §­ зҐ­Ёп ўбҐе ЇҐаҐ¬Ґ­­ле!')
       end;

     readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.