Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2011, 23:04   #1
TomOoma
 
Регистрация: 07.05.2011
Сообщений: 3
Восклицание Паскаль. Файлы

Данная прога реализует метод Рунге-Кутта первого порядка, его аналитическое решение, и стоит их графики аналитического и численного решения. При вычислении численного решения, значения записываются в файл, считываются из файла и строиться график.
Прога нормально работает при значения шага до 0.001. А при значении шага от 0.001 выдает ошибку 104 "файл не открыт для ввода". В чем проблема????
Заранее благодарю за помощь.

Код:

Цитата:
Program MRK;
Uses Graph, DOS;
var
x3,y3 : Array[1..50] of LongInt;
fa, fo: Text;
h1,a,b,x1,y1, x0,xn,y0,h,xk,yk,yn,k1,k2,k3,k4 : Real;
d, r, z,x,y,j,i,n : integer;

function F(xk,yk:real):real;
begin
F:=yk;
end;
{Вычисляю и записываю в файл значения численного решения}
Begin
assign(fa,'strings.txt'); {Для считывания и построения графика}
assign(fo,'string.txt'); {Это создано по просьбе преподавателя, уточняет где что находиться}
rewrite(fa);
rewrite(fo);
x0:=0; xn:=2; y0:=1;
writeln('vvedite shag h: ');
readln(h);
writeln(fa, x0,' ',y0);
writeln(fo, 'Nachaloe znachene x=', x0:2:2,' y(x)= ',y0:2:2);
writeln(fo, ' x chuslennoe reshenie analiticheskoe reshenie' );
writeln('x=',x0,' y(x)=',y0);
writeln(' x chuslennoe reshenie analiticheskoe reshenie' );
xk:=x0; yk:=y0;
while xk<=xn do
begin
yk:=yk+h*F(xk,yk); {численное решение}
xk:=xk+h;
yn:=exp(xk); {Аналитическое решение}
writeln(fo, xk:2:4,' ', yk,' ',yn);
writeln(xk:5:6,' ', yk,' ',yn);
writeln(fa, xk,' ', yk);
end;
begin
readln; close(fo); close(fa);
end;
{построение графиков}
begin
d := Detect; InitGraph(d, r, '');
z := GraphResult;
if z <> grOk then
writeln(GraphErrorMsg(z));
begin {Построение осей}
SetBkColor(8);
LINE(1,340,630,340);
LINE(320,1,320,480);
j:=40;
REPEAT
LINE(j,337,j,342);
j:=j+70;
outtextxy(310,347,'0');
outtextxy(386,347,'1');
outtextxy(456,347,'2')
UNTIL j>640;
j:=60;
REPEAT
LINE(317,j,322,j);
j:=j+70;
outtextxy(315,265,'1')
UNTIL j>480;
h1:=0.001; x1:=-5-h1; {построение аналитического решения}
for j:=1 to 10000 do
Begin
x1:=x1+h1;
y1:=exp(x1);
x:=trunc(320/5*x1);
y:=trunc(340/5*y1);
PutPixel(320+x,340-y,red);
end;
Assign(fa, 'strings.txt'); {Открытие и построение численного решения}
{$I-} Reset(fa); i:=0; {$I+}
If IOResult = 0 then
begin
While not eof(fa) do {ОШИБКА! Курсор указывает на это место }
begin
Read(fa,a,b); Inc(i);
X3[i]:=Trunc(320/5*a);
Y3[i]:=Trunc(340/5*b);
x3[i] :=320+ X3[i];
y3[i]:=340- Y3[i];
n:=i-1;
end;
for i:= 2 to n do
Begin
setcolor(1);
line(x3[i-1], y3[i-1], x3[i], y3[i]);
end;
end;
Close(fa);
End;
Readln;
CloseGraph;
end;
END.

Последний раз редактировалось TomOoma; 10.05.2011 в 23:40.
TomOoma вне форума Ответить с цитированием
Старый 11.05.2011, 00:41   #2
Swarog
Форумчанин
 
Аватар для Swarog
 
Регистрация: 26.01.2010
Сообщений: 215
По умолчанию

попробуй заменить
Код:
{$I-} Reset(fa); i:=0; {$I+}
If IOResult = 0 then
begin
While not eof(fa) do {ОШИБКА! Курсор указывает на это место }
на
Код:
{$I-} Reset(fa);{$I+}
If IOResult = 0 then
begin
 i:=0; 
While not eof(fa) do {ОШИБКА! Курсор указывает на это место }
в принципе просто гадаю но вдруг поможет
Могу лишь пнуть в нужном направлении (ну или как получится)
Swarog вне форума Ответить с цитированием
Старый 11.05.2011, 02:04   #3
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

С индексами массивов разберитесь, была недавно такая же проблема. Там человек пытался считать данные в статический массив, начиная с единицы, хотя индекс массива был объявлен с 5.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 15.05.2011, 12:57   #4
TomOoma
 
Регистрация: 07.05.2011
Сообщений: 3
По умолчанию

Swarog и Sparkman:спасибо за помощь, помогло))
правда, потом возникла ошибка 201...
поменяла
x3,y3 : Array[1..50] of LongInt;
на
x3,y3 : Array[1..1000] of integer;
Все заработало))
Еще раз благодарю))
TomOoma вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль(файлы) masterlomaster Помощь студентам 1 03.03.2011 16:48
паскаль! Файлы!!! кусака Помощь студентам 1 16.11.2010 18:29
файлы. (паскаль) Kate Valerevna Помощь студентам 0 01.11.2010 17:38
паскаль(файлы) афродита Помощь студентам 3 15.06.2010 07:37