[ kUdtiHaEX @ 07.04.2004. 10:20 ] @
Pozdrav. Poprilicno sam iznerviran jer nikako ne mogu da nateram glupi program da pise po fajlu. Evo source-a:

Citat:

program poet_domaci(input,output,ff);

const

Us=0.025;
max=50; //maximalan broj prolazakroz petlju koja polovi segmenate
var
BR,Poc,a,iis,E,R,U,I,pol:real;
uslov:boolean;
ff:text;

function f(I:real):real; //racuna f-ju od struje i=is(e^((e-ri)/us-1)
var
pom,s:real;
begin
s:=(E-R*I)/Us;
pom:=exp(S);
s:=I-iis*pom+iis;
f:=s;
end;

Begin
assign(ff,'resenje.txt');
rewrite(ff);
writeln('Unesite struju Is u amperima:');
readln(iis);
writeln('Unesite ems E u voltima:');
readln(e);
writeln('Unesite otpornost R u omima:');
readln(R);
BR:=1;
poc:=E/R; // struja diode ne moze biti veca od ove vrednosti, zbog i=(e-u)/r, a u je >0
a:=0; //struja diode ne moze biti negativna, jer u tom smeru dioda ne propusta struju

if f(a)*f(poc)<0 then //tada trazimo nulu funkcije, jer su vrednosti funkcija pocetnih
begin //koordinata razlicitog znaka
uslov:=true;
while (BR<max) and (abs(poc-a)>0.000001) do //trazimo nulu funkcije do preciznosti 0.000001
begin
pol:=(a+poc)/2; //polovina segmenta
if f(pol)*f(a)<0 then //provera da li je nula izmedju pol i a
begin
poc:=pol;
I:=poc; // struju postavljam na pol koja se sve vise svakim prolazom
end //priblizava stvarnoj vrednosti struje (tj. nuli f-je)
else //ako nije izmedju pol i a, nula je izmedju pol i poc
begin
a:=pol;
I:=a;
end;
BR:=BR+1; //broj prolaza kroz petlju
end;
end else //ako su vrednosti funkcija pocetnih koordinata istog znaka
writeln (ff,'Nula nema ili ima paran broj nula.'); //resenje se ispisuje u datoteku

if uslov then //ako smo nasli nulu
begin
U:=E-R*I;
writeln;
writeln (ff,'Napon diode U je ', U:3:3, ' volti, a struja diode I je ',I:6:6, ' ampera.');
close(ff);
end;
end.


Radili smo na nekom levom Pascal-u koji u sebi nema build, medjutim prilikom RUN-a davao je izlaz u resenje.txt. Sada kada sam poneo source kuci (jer doticni nema build) i iskompajlirao program, nemam izlaz u pomenuti txt fajl.
Kada sam umesto rewrite(...) stavio reset(...) program je samo pucao. Ima li iko ideju gde sam pogresio?
[ kUdtiHaEX @ 07.04.2004. 11:25 ] @
Nasao sam resenje problema. Problem je u formuli s:=(E-R*I)/Us. Kada se stave velike vrednosti tipa 50 necega :) program ne radi, cim stavim vrednosti do 20 on radi :D Sad cu optimizovati formulu :D
[ kUdtiHaEX @ 08.04.2004. 06:39 ] @
Nisam uspeo da resim problem sa formulom, help?