В казці Вінні пух хотів дістатися до меду за до кульки. У П'ятачка була зелена та синя кулі, тому Вінні пух міг замаскуватися або під листок або під хмаринку. Розробіть алгоритм, що демонструватиме ким стане Вінні пух
begin Write('Введите через пробел коэффициенты a,b,c: '); Readln(a, b, c); if b = 0 then begin if c > 0 then Writeln('Нет действительных корней') else if c = 0 then Writeln('Единственный корень x=0') else begin y1 := -c / a; if y1 > 0 then begin y1 := sqrt(y1); x1 := -sqrt(y1); x2 := -x1; Writeln('Два действительных корня: ', x1, ', ', x2) end else Writeln('Нет действительных корней') end end else if c = 0 then if b > 0 then Writeln('Единственный корень x=0') else begin y1 := -b / a; if y1 > 0 then begin x1 := sqrt(-b / a); x2 := -x1; Writeln('Три действительных корня: 0, ', x1, ', ', x2) end else Writeln('Единственный корень x=0') end else begin D := sqr(b) - 4 * a * c; if D < 0 then Writeln('Нет действительных корней') else if D = 0 then begin y1 := -b / (2 * a); if y1 < 0 then Writeln('Нет действительных корней') else begin x1 := sqrt(y1); x2 := -x1; Writeln('Два действительных корня: ', x1, ', ', x2) end end else begin D := sqrt(D); y1 := (-b - D) / (2 * a); y2 := (-b + D) / (2 * a); if y1 < 0 then if y2 < 0 then Writeln('Нет действительных корней') else begin x1 := -sqrt(y2); x2 := -x1; Writeln('Два действительных корня: ', x1, ', ', x2) end else if y2 < 0 then begin x1 := -sqrt(y1); x2 := -x1; Writeln('Два действительных корня: ', x1, ', ', x2) end else begin x1 := -sqrt(y1); x2 := -x1; x3 := -sqrt(y2); x4 := -x3; if x1 = x2 then Writeln('Три действительных корня: ', x1, ', ', x3, ', ', x4) else if x3 = x4 then Writeln('Три действительных корня: ', x1, ', ', x2, ', ', x3) else Writeln('Четыре действительных корня: ', x1, ', ', x2, ', ', x3, ', ', x4) end end end end.
Тестовое решение: Введите через пробел коэффициенты a,b,c: 1 -25 144 Четыре действительных корня: -3, 3, -4, 4
Введите через пробел коэффициенты a,b,c: -1 -4 5 Два действительных корня: -1, 1
a, b, c, D, x1, x2, x3, x4, y1, y2: double;
begin
Write('Введите через пробел коэффициенты a,b,c: ');
Readln(a, b, c);
if b = 0 then begin
if c > 0 then Writeln('Нет действительных корней')
else
if c = 0 then Writeln('Единственный корень x=0')
else begin
y1 := -c / a;
if y1 > 0 then begin
y1 := sqrt(y1); x1 := -sqrt(y1); x2 := -x1;
Writeln('Два действительных корня: ', x1, ', ', x2)
end
else
Writeln('Нет действительных корней')
end
end
else
if c = 0 then
if b > 0 then Writeln('Единственный корень x=0')
else begin
y1 := -b / a;
if y1 > 0 then begin
x1 := sqrt(-b / a); x2 := -x1;
Writeln('Три действительных корня: 0, ', x1, ', ', x2)
end
else
Writeln('Единственный корень x=0')
end
else begin
D := sqr(b) - 4 * a * c;
if D < 0 then Writeln('Нет действительных корней')
else
if D = 0 then begin
y1 := -b / (2 * a);
if y1 < 0 then
Writeln('Нет действительных корней')
else begin
x1 := sqrt(y1); x2 := -x1;
Writeln('Два действительных корня: ', x1, ', ', x2)
end
end
else begin
D := sqrt(D);
y1 := (-b - D) / (2 * a); y2 := (-b + D) / (2 * a);
if y1 < 0 then
if y2 < 0 then Writeln('Нет действительных корней')
else begin
x1 := -sqrt(y2); x2 := -x1;
Writeln('Два действительных корня: ', x1, ', ', x2)
end
else
if y2 < 0 then begin
x1 := -sqrt(y1); x2 := -x1;
Writeln('Два действительных корня: ', x1, ', ', x2)
end
else begin
x1 := -sqrt(y1); x2 := -x1;
x3 := -sqrt(y2); x4 := -x3;
if x1 = x2 then
Writeln('Три действительных корня: ', x1, ', ', x3, ', ', x4)
else
if x3 = x4 then
Writeln('Три действительных корня: ', x1, ', ', x2, ', ', x3)
else
Writeln('Четыре действительных корня: ', x1, ', ', x2, ', ', x3, ', ', x4)
end
end
end
end.
Тестовое решение:
Введите через пробел коэффициенты a,b,c: 1 -25 144
Четыре действительных корня: -3, 3, -4, 4
Введите через пробел коэффициенты a,b,c: -1 -4 5
Два действительных корня: -1, 1
program raf105;
const
n = 5;
var
a: array[1..n] of integer;
x,max,min,i: integer;
begin
writeln('Введите ',n,' по очереди');
for i:=1 to n do
readln(a[i]);
max:= a[1];
min:= a[1];
for i:=1 to n do
begin
if max < a[i]
then max:= a[i];
if min > a[i]
then min:= a[i];
end;
writeln;
write('Массив: ');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln('Наибольший элемент: ',max);
writeln('Наименьший элемент: ',min);
end.
2.program raf105;
const
n = 5;
var
a: array[1..n] of real;
x,i: integer;
min: real;
begin
writeln('Введите ',n,' по очереди');
for i:=1 to n do
readln(a[i]);
writeln;
write('Исходный массив: ');
for i:=1 to n do
write(a[i],' ');
min:= a[1];
for i:=1 to n do
if min > a[i]
then min:= a[i];
for i:=1 to n do
a[i]:= a[i]/min;
writeln;
write('Изменённый массив: ');
for i:=1 to n do
write(a[i],' ');
end.
3.program raf105;
const
n = 8;
var
a: array[1..n] of integer;
x,i,max: integer;
begin
writeln('Введите ',n,' по очереди');
for i:=1 to n do
readln(a[i]);
writeln;
write('Исходный массив: ');
for i:=1 to n do
write(a[i],' ');
max:= a[1];
for i:=1 to n do
if max < a[i]
then max:= a[i];
for i:=1 to n do
a[i]:= a[i]+max;
writeln;
write('Изменённый массив: ');
for i:=1 to n do
write(a[i],' ');
end.
PascalABC 3.4.2