![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a,b,c,x1,x2,x3,x4,t1,d,t2: real;
m:array[1..4]of Real;
i,j,kol:Integer;
Begin
Reset(Input,'bisqr.in');
Rewrite(Output,'bisqr.out');
read(a);
read(b);
read(c);
for i:=1 to 4 do m[i]:=999999;
d:=b*b-4*a*c;
if d >= 0 then
begin
t1:=(-b+sqrt(d))/(2*a);
t2:=(-b-sqrt(d))/(2*a);
if t1 >= 0 then
begin
x1:=sqrt(t1); x2:=-x1;
m[1]:=x1;m[2]:=x2;
end
else begin m[1]:=999999; m[2]:=999999 end;
if t2 >= 0 then
begin
x3:=sqrt(t2); x4:=-x3;
m[3]:=x3; m[4]:=x4;
end
else begin m[3]:=999999;m[4]:=999999;end;
end
else m[1]:=999999;
kol:=0;
for i:=1 to 4 do begin
if m[i]<>999999 then kol:=kol+1;
end;
Writeln(kol);
for i:=1 to 4 do begin
if m[i]<>999999 then Writeln(m[i]:0:6);
end;
closefile(output);
End. |
|
#2
|
||||
|
||||
|
Не знаю что там дальше, смотреть как-то перехотелось после просмотра первых 2 строчек...
Код:
// так нельзя!
// Reset(Input,'bisqr.in');
// Rewrite(Output,'bisqr.out');
AssignFile(Input, 'bisqr.in');
{$I-}
Reset(Input);
if(if IOResult <> 0) then
ReWrite(Input);
{$I+}
... |
|
#3
|
|||
|
|||
|
ну это нам не слишком важно.....это уже мелочи.....тут дальше гдето есть ошибка=(
|
|
#4
|
||||
|
||||
|
че такое m[]:=999999 и зачем это надо? о_О
|
|
#5
|
|||
|
|||
|
у нас не всегда есть все 4 корня....ну и так как мы предположили что корня 999999 нет, то будем пользоваться этим числом для проверки наличия корня....
да,это глупо, но я подругому не умею=( |
|
#6
|
||||
|
||||
|
а почему нельзя просто найти корни квадратного уравнения, и после проверить, если корни больше нуля, то еще раз корни и вывести их на экран, если меньше, вывести "ах он гад какой, не решается"
зачем столько лишнего кода? Последний раз редактировалось SerginhoLD, 05.12.2010 в 01:20. |
|
#7
|
|||
|
|||
|
Цитата:
|
|
#8
|
||||
|
||||
|
Код:
if d >= 0 then
begin
t1:=(-b+sqrt(d))/(2*a);
t2:=(-b-sqrt(d))/(2*a);
if t1 >= 0 then
begin
x1:=sqrt(t1); x2:=-x1;
//m[1]:=x1;m[2]:=x2;
writeln('x1: ',x1,'; x2: ',x2);
end
else writeln('нехорошее уравнение');
if t2 >= 0 then
begin
x3:=sqrt(t2); x4:=-x3;
//m[3]:=x3; m[4]:=x4;
writeln('x3: ',x3,'; x4: ',x4);
end
else writeln('нехорошее уравнение');
end
// и все вроде :) |
|
#9
|
|||
|
|||
|
спасибо=)))
|
|
#10
|
|||
|
|||
|
Просто дело в том что мне еще нужно выводить количесив решений(
|
|
#11
|
||||
|
||||
|
ну глобальная переменная, допустим i, сначала равна нулю
потом если корень больше нуля, то i:=i+2, да и все |
|
#12
|
|||
|
|||
|
Цитата:
Код:
program Project2n;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a,b,c,x1,x2,x3,x4,t1,d,t2: real;
m:array[1..4]of Real;
i,j,kol:Integer;
label hh;
Begin
Reset(Input,'bisqr.in');
Rewrite(Output,'bisqr.out');
read(a);
read(b);
read(c);
if (a=0) and (b=0) and (c=0) then begin Writeln(-1); goto hh;end;
d:=b*b-4*a*c;
if d >= 0 then
begin
t1:=(-b+sqrt(d))/(2*a);
t2:=(-b-sqrt(d))/(2*a);
if t1 >= 0 then
begin
x1:=sqrt(t1); x2:=-x1;
//m[1]:=x1;m[2]:=x2;
// writeln('x1: ',x1,'; x2: ',x2);
i:=2;
end
else I:=0;
if t2 >= 0 then
begin
x3:=sqrt(t2); x4:=-x3;
//m[3]:=x3; m[4]:=x4;
// writeln('x3: ',x3,'; x4: ',x4);
I:=I+2;
end
else i:=i+1;
end;
if d<0 then i:=0;
writeln(i);
if x1<>0 then Writeln(x1:0:6);
if x2<>0 then Writeln(x2:0:6);
if x3<>0 then Writeln(x3:0:6);
if x4<>0 then Writeln(x4:0:6);
hh:
CloseFile(Output);
end. |
|
#13
|
||||
|
||||
|
на
PHP код:
|
|
#14
|
|||
|
|||
|
а как обработать вариант когда решений бесконечно много? например когда a b и c =0?.... просто я знаю только один такой пример=(
|
|
#15
|
|||
|
|||
|
я не знаю почему, но когда я добавил обработку а=0 б=0 с=0, программа всеравно не прошла тесты((.... пришло сообщение что там
Ошибка времени исполнения; В конце программы на C/C++ нет оператора 'return 0'; 'return (не 0)' в программе на С/С++; 'halt(не 0)' в программе на паскале; 'System.exit(non-zero)' в программе на Java; Необработанная исключительная ситуация в чем ошибка я не могу понять(( Код:
program Project1d;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a,b,c,x1,x2,x3,x4,t1,d,t2: double;
tf1, tf2: boolean;
i:Integer;
label hh;
Begin
Reset(input,'bisqr.in');
Rewrite(Output,'bisqr.out');
a:=4; b:=-13; c:=7; i:=0; tf1:=false; tf2:=false;
read(a,b,c);
if (a=0) and (b=0) and (c=0) then begin Writeln(-1); goto hh; end;
d:=b*b-4*a*c;
if d >= 0 then
begin
t1:=(-b+sqrt(d))/(2*a);
t2:=(-b-sqrt(d))/(2*a);
if t1 >= 0 then
begin
x1:=sqrt(t1); x2:=-x1;
tf1:=true;
i:=i+2;
end;
if t2 >= 0 then
begin
x3:=sqrt(t2); x4:=-x3;
tf2:=true;
i:=i+2;
end;
end
else i:=0;
writeln(i);
if tf1 then writeln(x1:0:6,#10#13,x2:0:6);
if tf2 then writeln(x3:0:6,#10#13,x4:0:6);
hh:
CloseFile(Output);
end. |