|
|
Регистрация | << Правила форума >> | 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. |