Cześć, "klepie" właśnie programik w Pascalu i na samym końcu chciałem, aby program pytał o powtórzenie obliczeń dla innych danych. Wrzuciłem więc pętlę repeat until, ale niestety pętla nie wykonuje się poprawnie.
program project1;
{$N+,E-}
uses dos, Crt;
type vector = array [0..20] of Extended;
var i, it, mit, n, st : Integer;
xw : Double;
pyt : Char;
eps, w, x : Extended;
a : vector;
plik : text;
{$I D:\MetNum\NWTROOTS.PAS}
begin
ClrScr;
Assign(plik, 'Wynik.txt');
Rewrite(plik);
repeat
ClrScr;
Writeln(plik, 'Dla danych: ');
close(plik);
ClrScr;
Writeln ('* Newtonroots test *');
Writeln;
Write ('n (<=20 due to the definition of type "vector") = ');
Readln (n);
for i:=0 to n do
begin
Write ('a[', i, '] = ');
Readln (a[i]);
Append(plik);
Writeln(plik, 'a', i, ' = ', a[i]:5:3);
Close(plik);
end;
Write ('x = ');
Readln (xw);
x := xw;
Write ('mit = ');
Readln (mit);
Write ('eps = ');
Readln (eps);
Writeln ('Newtonroots (n, a, x, mit, eps, w, it, st) = ',
Newtonroots (n, a, x, mit, eps, w, it, st));
Writeln ('w = ', w, ' it = ', it, ' st = ', st);
Append(plik);
Writeln(plik, 'n = ', n,' ', 'mit = ', mit, ' ', 'x = ', xw:2:2, ' ', 'eps = ', eps:3:2);
Writeln(plik, 'Wynik wynosi : ');
Writeln(plik, 'w = ', w, ' it = ', it, ' st = ', st);
Close(plik);
Writeln('Czy chcesz obliczyc pierwiastek metoda Newtona dla innych danych?');
Writeln('Y = Tak, N = Nie');
Readln(pyt);
until (pyt=chr(78));
Readln
end.
Pascala nie używałem już kilka lat, ale chyba jest dobrze. Dlaczego więc program "olewa" repeat until? Mimo, że pyt nie jest równe N program przechodzi dalej.