2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Delphi массивы
Сообщение08.10.2006, 09:18 


03/04/06
40
Иркутск
Уважаемые программисты просьба помочь, вообщем ситуация заключается в следующем, вот программа по численному решению системы методом Рунге-Кутта, программа работает, но загвоздка возникла в следущем, не могу считать значения функций и шага в отдельные массивы, делфи выдает ошибку непонятную, я даже потом решил считывать отдельноо из каждого файла но увы косяки с функцией strtofloat

код:

const
k=1;T=10;g=1;
var
k11,k12,k21,k22,k31,k32,k41,k42,z,dz,y,dy,dt,lin:real;
f,yt,zt,lint:text;
n,i,j:integer;
zm,ym,linm:array[1..250] of real; //extended for strtofloat
begin
assign(f,'lab1.dat');rewrite(f);
assign(yt,'yt.dat');rewrite(yt);
assign(zt,'zt.dat');rewrite(zt);
assign(lint,'lint.dat');rewrite(lint);
dt:=0.001;lin:=0;
i:=1;
while lin<200 do begin
k11:=z*dt;
k12:=(k*g/(T*T)-y/(T*T))*dt;
k21:=(z+k12/2)*dt;
k22:=(k*g/(T*T)-(y+k11/2)/(T*T))*dt;
k31:=(z+k22/2)*dt;
k32:=(k*g/(T*T)-(y+k21/2)/(T*T))*dt;
k41:=(z+k32)*dt;
k42:=(k*g/(T*T)-(y+k31)/(T*T))*dt;
dy:=(k11+2*k21+2*k31+k41)/6;
dz:=(k12+2*k22+2*k32+k42)/6;
y:=y+dy;
z:=z+dz;
if n mod 800=0 then
begin
writeln(f,'при шаге=',lin:6:3,' функции y=',y:9:6,'; z=',z:9:6);
writeln(lint,lin:6:3);writeln(yt,y:9:6); writeln(zt,z:9:6);
linm[i]:=lin; ym[i]:=y; zm[i]:=z;// вот в этой строке вся загвоздка
end;
lin:=lin+dt;
n:=n+1;
i:=i+1;
end;
close(f);
close(zt);
close(yt);
close(lint);
{assign(yt,'yt.dat'); reset(yt);
assign(zt,'zt.dat'); reset(zt);
assign(lint,'lint.dat'); reset(lint);
While not eof(yt) do
begin
read(yt,tempstring);
u:=strtofloat(tempstring);
end;
close(zt);
close(yt);
close(lint);}
end.

 Профиль  
                  
 
 Re: Delphi массивы
Сообщение08.10.2006, 13:06 
Аватара пользователя


28/06/06
138
VSSISTU писал(а):
writeln(f,'при шаге=',lin:6:3,' функции y=',y:9:6,'; z=',z:9:6);
writeln(lint,lin:6:3);writeln(yt,y:9:6); writeln(zt,z:9:6);
linm[i]:=lin; ym[i]:=y; zm[i]:=z;// вот в этой строке вся загвоздка

zt -у Вас текстовый файл, его значениями являются строки а не числа.
Попробуйте так:
Var
s:string;
.........
s:=floattostr(z);
writeln(zt,S);

 Профиль  
                  
 
 
Сообщение08.10.2006, 17:14 


03/04/06
40
Иркутск
ну и какой извините в этом смысл, переводить число функции в строку, а зетем прописывать его в файл

 Профиль  
                  
 
 
Сообщение08.10.2006, 17:19 
Аватара пользователя


28/06/06
138
VSSISTU писал(а):
ну и какой извините в этом смысл, переводить число функции в строку, а зетем прописывать его в файл

Должен Вас сказать,что очень трудно понять,что Вы хотите спросить.
Изложите более ясно, тогда может Вам и помогут.

 Профиль  
                  
 
 
Сообщение08.10.2006, 18:28 


03/04/06
40
Иркутск
Woland спасибо за внимание, я сам додумался 8-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group