PDA

Zobacz pełną wersję : Tpascal problem



woffer
31-10-11, 10:08
Witam,mam prośbę czy mogłby mi ktoś napisać program obliczający funckje:

-
| Ax+By=C
| Dx+Ey=F
-
Bardzo proszę o pomoc.

woffer
01-11-11, 20:19
Witam ponownie ,pisze do was z prośba o pomoc ,za pomocą internetu itp udało mi się napisać kawałek kodu a wyglada on tak:
ax+by=c
dx+ey=f'

program uklad;
uses crt;
var
a,b,c,d,e,f:real;
w,wx,wy:real;
begin clrscr;

writeln('ax+by=c');
writeln('dx+ey=f');
writeln;

writeln('podaj dane a,b,c,d,e,f');
write('podaj a= ');
readln(a);
write('podaj b= ');
readln(b);
write('podaj c= ');
readln(c);
write('podaj d= ');
readln(d);
write('podaj e= ');
readln(e);
write('podaj f= ');
readln(f);


wx:=(c*e-b*f)/(a*e-b*d);
wy:=(a*f-c*d)/(a*e-b*d);

writeln('x= ',wx:0:2);
writeln('y= ',wy:0:2);

if w<>0 then
begin
writeln('x= ',wx:0:2);
writeln('y= ',wy:0:2);
end;

if (wx=0) and (wy=0) then writeln('uklad nie ma oznaczenia');
if (wx=0) and (wy=0) then writeln('rownanie sprzeczne');
readln;
end.



problem polega na tym, ze nie działaja te napisy na dole uklad sprzeczny i nie oznaczony bo wiadomo nie moze byc dzielenia przez zero.
proszę o pomoc.

RRybak
02-11-11, 12:33
Ja się tam na matematyce nie znam, ale:
1. skąd bierzesz wartość "w" do if'a ?
2. Dzielenie przez 0 i tak zrobisz, jeśli (a*e-b*d) = 0 (wtedy jest sprzeczne)? Po tym jak zrobisz dzielenie przez zero, nic więcej Ci się już nie wykona
3. warunek na ostatnie writeln masz, że jeśli wy będzie równe zero ORAZ wx będzie równe 0, to wtedy "napisz sprzeczne / bez oznaczenia" (oba takie same?) Teraz się zastanów kiedy Twoje wy, wx będą równe zero.
Kiedy (c*e-b*f) = 0
ORAZ
kiedy (a*f-c*d) = 0

404_Not_Found
02-11-11, 17:35
Ja Ci pisalem wczesniej posta z tym ze wyskoczyl komunikat ze mod musi akceptnac ~.0 az w koncu nie doszlo
Co do ifow to sprawdz tak:
if ((wx=0) and (wy=0)) then
writeln('uklad nie ma oznaczenia');

if ((wx=0) and (wy=0)) then
writeln('rownanie sprzeczne');
readln;

a tak swoja droga to nie widze obiczania x i y
czyli x:=(wx/w) i y:=(wy/w)


jesli nie zadziala kod powyzej to sprawdz tak:
if(w=0) then begin
writeln('x= ',x);
writeln('y= ',y);
else
if((wx=0) AND (wy=0)) then
writeln('nieskoncenie wiele rozwiazan');
else
writeln('brak rozwiazan')
end

wybacz ze Ci pisze sprawdz to i tamto ale nie mam kompilatora a mam wolne lacze i nie sciagne