|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Не записывает в файл строку
Всем привет! Проблема ерундовая! Почему-то не записывает в файл несколько значений.
Все нужные вещи обозначены вот так: f,g: TextFile; fdir,gdir,tendstr: string; Все остальные указанные переменные обозначены как real и integer и массивы собственно. Суть проблемы: Пишет что в строчках где закрываются файлы: too many actual parameters Вот код: Код:
fdir:='C:\Users\Руслан\Desktop\Компьютерная физика\СДАВАТЬ\Уравнение теплопроводности ДЕЛФИ\res.txt'; AssignFile(f,fdir); Rewrite(f); WriteLn(f,'Толщина пластин L =',L:6:4); WriteLn(f,'Число узлов по координате N =',N); WriteLn(f,'Коэффициент теплопроводности материала lamda =',lamda:6:4); WriteLn(f,'Плотность материала ro =',ro:6:4); WriteLn(f,'Теплоемкость материала c =',c:6:4); WriteLn(f,'Начальная температура T0 =',T0:6:4); WriteLn(f,'Температура на границе х=0, T1 =',T1:6:4); WriteLn(f,'Температура на границе х=L, Tr =',Tr:6:4); WriteLn(f,'Результат получен с шагом по координате h =',h:6:4); WriteLn(f,'Результат получен с шагом по времени tau =',tau:6:4); WriteLn(f,'Температурное поле в момент времени t =',tend:6:4); close(f); gdir:='C:\Users\Руслан\Desktop\Компьютерная физика\СДАВАТЬ\Уравнение теплопроводности ДЕЛФИ\tempr.txt'; AssignFile(g,gdir); Rewrite(g); for i:=1 to N do writeln(g,' ',h*(i-1):6:3,' ',T[i]:8:5); close(g); |
#2
|
|||
|
|||
Наверно кто-нибудь потребует листинг всей программы. Это решение уравнения теплопроводности неявным методом, пока что без аналитики. Вот код:
Код:
unit teplo; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Label3: TLabel; Edit3: TEdit; Label4: TLabel; Edit4: TEdit; Label5: TLabel; Edit5: TEdit; Label6: TLabel; Edit6: TEdit; Label7: TLabel; Edit7: TEdit; Label8: TLabel; Label9: TLabel; Edit8: TEdit; Edit9: TEdit; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Button1: TButton; Chart1: TChart; Series1: TLineSeries; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; i,j,N: integer; T,alfa,beta: array [1..500] of real; ai,bi,ci,fi: real; lamda,ro,c,h,tau: real; T1,T0,Tr,L,tend,time: real; f,g: TextFile; fdir,gdir,tendstr: string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); // Íåÿâíàÿ ñõåìà begin {1} series1.clear; //Ñ×ÈÒÛÂÀÍÈÅ ÏÀÐÀÌÅÒÐΠN:=strtoint(edit1.Text); tend:=strtofloat(edit2.Text); L:=strtofloat(edit3.Text); lamda:=strtofloat(edit4.Text); ro:=strtofloat(edit5.Text); T0:=strtofloat(edit6.Text); T1:=strtofloat(edit7.Text); Tr:=strtofloat(edit8.Text); //îïðåäåëÿåì ðàñ÷åòíûé øàã ñåòêè ïî ïðîñòðàíñòâåííîé êîîðäèíàòå h:=L/(N-1); //îïðåäåëÿåì ðàñ÷åòíûé øàã ñåòêè ïî âðåìåíè tau:=tend/100; //îïðåäåëÿåì ïîëå òåìïåðàòóðû â íà÷àëüíûé ìîìåíò âðåìåíè for i:=1 to N do {*} T[i]:=T0; //èíòåãðèðîâàíèå íåñòàöèîíàðíîãî óðàâíåíèÿ òåïëïðîâîäíîñòè time:=0; while time < tend do begin {2} time:=time+tau; {îïðåäåëÿåì íà÷àëüíûå ïðîãîíî÷íûå êîýôôèöèåíòû íà îñíîâå ëåâîãî ãðàíè÷íîãî óñëîâèÿ} alfa[1]:=0; beta[1]:=T1; for i:=2 to N-1 do begin {3} {ai,bi,ci,fi - êîýôôèöèåíòû êàíîíè÷åñêîãî ïðåäñòàâëåíèÿ ÑËÀÓ ñ òðåõäèàãîíàëüíîé ìåòðèöåé} ai:=lamda/sqrt(h); bi:=(2*lamda)/(sqrt(h))+ro*c/tau; ci:=lamda/sqrt(h); fi:=-ro*c*T[i]/tau; {alfa[i],beta[i] - ïðîãîíî÷íûå êîýôôèöèåíòû} alfa[i]:=ai/(bi-ci*alfa[i-1]); beta[i]:=(ci*beta[i-1]-fi)/(bi-ci*alfa[i-1]); end; {3} {îïðåäåëÿåì çíà÷åíèå òåìïåðàòóðû íà ïðàâîé ãðàíèöå} T[N]:=Tr; {îïðåäåëÿåì íåèçâåñòíîå ïîëå òåìïåðàòóðû} for i:=N-1 downto 1 do {*} T[i]:=alfa[i]*T[i+1]+beta[i]; end; {2} //Âûâîä ðåçóëüòàòîâ â ôàéë fdir:='C:\Users\Ðóñëàí\Desktop\Êîìïüþòåðíàÿ ôèçèêà\ÑÄÀÂÀÒÜ\Óðàâíåíèå òåïëîïðîâîäíîñòè ÄÅËÔÈ\res.txt'; AssignFile(f,fdir); Rewrite(f); WriteLn(f,'Òîëùèíà ïëàñòèíû L =',L:6:4); WriteLn(f,'×èñëî óçëîâ ïî êîîðäèíàòå N =',N); WriteLn(f,'Êîýôôèöèåíò òåïëîïðîâîäíîñòè ìàòåðèàëà lamda =',lamda:6:4); WriteLn(f,'Ïëîòíîñòü ìàòåðèàëà ro =',ro:6:4); WriteLn(f,'Òåïëîåìêîñòü ìàòåðèàëà c =',c:6:4); WriteLn(f,'Íà÷àëüíàÿ òåìïåðàòóðà T0 =',T0:6:4); WriteLn(f,'Òåìïåðàòóðà íà ãðàíèöå õ=0, T1 =',T1:6:4); WriteLn(f,'Òåìïåðàòóðà íà ãðàíèöå õ=L, Tr =',Tr:6:4); WriteLn(f,'Ðåçóëüòàò ïîëó÷åí ñ øàãîì ïî êîîðäèíàòå h =',h:6:4); WriteLn(f,'Ðåçóëüòàò ïîëó÷åí ñ øàãîì ïî âðåìåíè tau =',tau:6:4); WriteLn(f,'Òåìïåðàòóðíîå ïîëå â ìîìåíò âðåìåíè t =',tend:6:4); close(f); gdir:='C:\Users\Ðóñëàí\Desktop\Êîìïüþòåðíàÿ ôèçèêà\ÑÄÀÂÀÒÜ\Óðàâíåíèå òåïëîïðîâîäíîñòè ÄÅËÔÈ\tempr.txt'; AssignFile(g,gdir); Rewrite(g); for i:=1 to N do writeln(g,' ',h*(i-1):6:3,' ',T[i]:8:5); close(g); end;{1} end. |
#3
|
||||
|
||||
Потому что не close, а closefile
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |