![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Квадратное уравнение
Женя © (2012-12-21 12:43:00)Здравствуйте, посмотрите кому не тяжело, правильно ли я решила уравнение на Паскаль.
program prg_4;
uses
crt;
label
lb;
var
mode: Integer;
A,B,C,D: Real;
begin
lb:
clrscr;
write('A = ');
readln(A);
if (A = 0) then
begin
writeln('Korney net');
readln;
goto lb;
end;
write('B = ');
readln(B);
write('C = ');
readln(C);
D := B * B - 4 * A * C;
writeln('');
writeln('Otvet:');
if (D = 0) then
begin
writeln('X1 = X2 = ',(-B)/(2*A):6:2);
end;
if (D > 0) then
begin
writeln('x1 = ',((-B+Sqrt(D))/(2*A)):6:2);
writeln('x2 = ',((-B-Sqrt(D))/(2*A)):6:2);
end;
if (D < 0) then
begin
writeln('x1 = ',((Sqrt(-D))/(2*A)):6:2);
writeln('x2 = ',((-Sqrt(-D))/(2*A)):6:2);
end;
writeln('');
writeln('vveite 0 - vixod, 1 - prodoljit');
readln(mode);
if(mode = 0) then Exit;
if(mode = 1) then goto lb;
end.
Юрий Зотов (2012-12-22 00:54:00) [1]Женя, в программе [5] есть серьезная ошибка. Постарайтесь найти ее и исправить, а если не получится - спрашивайте.
Юрий Зотов (2012-12-21 17:24:00) [2]В самом начале программы (перед repeat) вставьте:
mode := 0
Женя (2012-12-21 15:39:00) [3]
> Юрий Зотов © (21.12.12 14:25) [5]
Спасибо.
Юрий Зотов (2012-12-21 14:26:00) [4]Поправка:
until
mode = 0
Юрий Зотов (2012-12-21 14:25:00) [5]Женя, метками и goto пользоваться можно, но это считается не очень хорошим стилем (хотя непонятно, почему). Ну и если уж рассматривать разные варианты (нет корней, один корень, два корня...), то надо рассматривать все.
В общем, посмотрите вот это. Писал "с ходу", могут быть ошибки, проверьте.
program prg_4;
var
mode: byte;
A, B, C, D: real;
begin
repeat
write('Введите A, B, C через пробел: ')l
readln(A, B, C);
if A = 0 then
if B = 0 then
if C = 0 then
writeln('Корень - любое число')
else
writeln('Корней нет')
else
writeln('X= ', -C / B:6:2)
else
begin
D := B * B - 4 * A * C;
if D < 0 then
writeln(Действительных корней нет')
else
if D = 0 then
writeln('X1 = X2 = ', -B / (2 * A) :6:2)
else
writeln('X1 = ', (-B - Sqrt(D)) / (2 * A) :6:2,
', X2 = ', (-B + Sqrt(D)) / (2 * A) :6:2);
repeat
write('Введите 0 - выход, 1 - продолжить: ');
readln(mode)
until
mode in [0, 1]
end
until
mode = 1
end.
Игорь Шевченко (2012-12-21 14:15:00) [6]
> writeln('Uravnenie virajdeno');
куда ?
брат Птибурдукова (2012-12-21 13:27:00) [7]Косметика исправлена, а принципиальные гадости — лейблы — на месте. И Exit тут совершенно не к месту.
Жека (2012-12-21 12:57:00) [8]A=0 - понятно, поменяю
D<0 - корней нет.
зачем убирать CRT и LABEL
СПАСИБО.
ОП новый вариант:
program prg_4;
uses
crt;
label
lb;
var
mode: Integer;
A,B,C,D: Real;
begin
lb:
clrscr;
write('A = ');
readln(A);
if (A = 0) then
begin
writeln('Uravnenie virajdeno');
readln;
goto lb;
end;
write('B = ');
readln(B);
write('C = ');
readln(C);
D := B * B - 4 * A * C;
writeln('');
writeln('Otvet:');
if (D = 0) then
begin
writeln('X1 = X2 = ',(-B)/(2*A):6:2);
end;
if (D > 0) then
begin
writeln('x1 = ',((-B+Sqrt(D))/(2*A)):6:2);
writeln('x2 = ',((-B-Sqrt(D))/(2*A)):6:2);
end;
if (D < 0) then
writeln('Korney net D = ',D:6:2);
writeln('');
writeln('vveite 0 - vixod, 1 - prodoljit');
readln(mode);
if(mode = 0) then Exit;
if(mode = 1) then goto lb;
end.
брат Птибурдукова (2012-12-21 12:48:00) [9]лейблы убери, crt убери, вариант с A=0 продумай получше (сообщение неправильное), вариант с D<0 неправильный