Помогите решить две задачи пожалуйста!
1) Придумайте выражение, которое с помощью mod, div, сложения, вычитания и умножения (без циклов и тому подобного):
Находит количество цифр, больших 6 в данном числе.
2) Помогите написать программу решения неравенства ax2 + bx + c > 0.
p.s. Пишу на Lazarus...
Код(неправильно считает при а=0):
var valueA,valueB,valueC,discriminant,valueX1,valueX2,valueX:real;
begin
writeln(Введите коэффициенты a,b,c(после ввода нажмите Enter):);
readln(valueA,valueB,valueC);
if valueA=0 then valueX:=valueB*valueX+valueC else // delete and customize
discriminant:=valueB*valueB-4*valueA*valueC;
writeln(Дискриминант равен: ,discriminant:1:0);
if discriminant>0 then
begin
valueX1:=(-valueB+sqrt(discriminant))/(2*valueA);
valueX2:=(-valueB-sqrt(discriminant))/(2*valueA);
if valueX1>valueX2 then
begin
valueX:=valueX1;
valueX1:=valueX2;
valueX2:=valueX;
writeln(Значение x1 и x2: , valueX1,valueX2);
end;
end;
if valueA>0 then
begin
if discriminant>0 then write(x<,valueX1:0:1, or x>,valueX2:0:1)
else write(Значение x - любое число);
end
else
begin
if discriminant>0 then write(x>,valueX1:0:1, and x<,valueX2:0:1)
else write(Решений нет);
end;
readln;
end.
Заранее огромное спасибо!

var a, b, c, d, x1, x2, t: real;
begin 
    writeln(Программа для решения неравенства ax^2 + bx + c > 0); 
    write(Введите коэффициенты a, b, c: ); 
    readln(a, b, c); 
    if a = 0 then begin
        if b = 0 then
        begin        

            if c > 0 then writeln((-∞; +∞))                   
                       else writeln(ø)       
        end
       
        else if b > 0 then writeln((, -c / b : 0 : 3, ; +∞))             

                           else writeln((-∞; , -c / b, )) 
    end 
    else 
    begin   
        d := b * b - 4 * a * c;   
        if d = 0 then
        begin     
            x1 := -b / (2 * a);     
            if a > 0 then writeln((-∞; , x1, ) U (, x1, ; +∞))               
                       else writeln(ø)   
        end   
        else if d > 0 then   
        begin     
            x1 := (-b - sqrt(d)) / (2 * a);     
            x2 := (-b + sqrt(d)) / (2 * a);     
            if x1 > x2 then     
            begin       
                t := x1;       
                x1 := x2;       
                x2 := t     
            end;     
            if a > 0 then writeln((-∞; , x1, ) U (, x2, ; +∞))               
                       else writeln((, x1, ; , x2, ))   
        end   
        else   
        begin     
            if a > 0 then writeln((-∞; +∞))               
                       else writeln(ø)   
        end 
    end
end.

Оцени ответ
Подпишись на наш канал в телеграм. Там мы даём ещё больше полезной информации для школьников!

Загрузить картинку
×