Значит написал программу в консоль апликейшен с "юнитом" в котором и сидит почти вся основная часть.При запуске происходит зацикливание на выводе тоесть он пишет одну и ту же фразу много раз.Как исправить? Заранее спасибо.Написано все в делфи.Тестировалось на Делфи 7. Code: program Project2; {$APPTYPE CONSOLE} uses SysUtils, Unit1 in 'Unit1.pas'; var m:matr; a:mas; i,j,r,k:integer; begin matrgen(m,r); writeln('generated matrix'); for i:=1 to r do begin for j:=1 to r do write(m[i,j]:4); writeln; end; matrfil(m,r); readln; end. а вот и юнит: Code: unit Unit1; interface type matr=array[1..10,1..10] of integer; mas=array[1..100] of integer; function rasm:integer; procedure matrgen(var mt:matr; var r1:integer); procedure matrfil(mt:matr; r1:integer); implementation function rasm:integer; begin randomize; result:=random(5)+5; writeln('matrix dimention= ',rasm); end; procedure matrgen(var mt:matr; var r1:integer); var i1,j1:integer; begin r1:=rasm; randomize; for i1:=1 to r1 do for j1:=1 to r1 do mt[i1,j1]:=random(50)-50; end; procedure matrfil(mt:matr; r1:integer); var t:textfile; fi:file of integer; fm:file of matr; fname,tname,mname:string[150]; i1,j1:integer; begin write('input file name '); readln(fname); tname:='c:\work\'+fname+'.txt'; fname:='c:\work\f'+fname+'.dat'; mname:='c:\work\m'+fname+'.dat'; assign(fm,mname); rewrite(fm); write(fm,mt); close(fm); assign(t,tname); rewrite(t); for i1:=1 to r1 do begin for j1:=1 to r1 do write(t,mt[i1,j1]:4); writeln; end; close(t); assign(fi,fname); rewrite(fi); for i1:=1 to r1 do for j1:=1 to r1 do write(fi,mt[i1,j1]); close(fi); end; end. Ток вы просто скоприруйте и запустите в делфи.
Это ты специально так код отформатировал, чтоб никто не догадался? Хитро - хитро. Было бы также неплохо чтобы ты сказал какую фразу пишет прога, чтобы примерно определить положение ошибки. Зацикливание происходит в function rasm:integer; из - за writeln убери его и все будет норм. ЗЫ: На дельфе не пишу очень давно так что если что не так не обессудьте.
точно точно, короче с тебя плюс к репе! Code: program Project2; {$APPTYPE CONSOLE} uses Unit2 in 'Unit2.pas'; var m :matr; a :mas; i, j, r, k : integer; begin matrgen(m,r); writeln('generated matrix'); for i:=1 to r do begin for j:=1 to r do write(m[i,j]:4); writeln; end; matrfil(m,r); readln; end. Code: unit Unit2; interface type matr=array[1..10,1..10] of integer; mas=array[1..100] of integer; function Rasm:Byte; procedure MatrGen(var mt:matr; var r1:integer); procedure MatrFil(mt:matr; r1:integer); implementation function Rasm:Integer; begin Randomize; result:=random(5)+5; WriteLn('matrix dimention= ',Rasm); (*Ошибка в том что function Rasm:Integer; тут вызывается рекурсивно; Я бы ваще на твоем месте написал бы function Rasm:Byte; так как резалт не более 255 и не менее 0 А исправить надо так: WriteLn('matrix dimention= ',Result); *) end; procedure matrgen(var mt:matr; var r1:integer); var i1,j1:integer; begin r1:=Rasm; randomize; for i1:=1 to r1 do for j1:=1 to r1 do mt[i1,j1]:=random(50)-50; end; procedure matrfil(mt:matr; r1:integer); var t : TextFile; fi : file of integer; fm : file of matr; fname, tname, mname : string[150]; i1,j1 : integer; begin write('input file name '); readln(fname); tname:=fname+'.txt'; fname:='f'+fname+'.dat'; mname:='m'+fname+'.dat'; AssignFile(fm,mname); ReWrite(fm); Write(fm,mt); CloseFile(fm); assignFile(t,tname); rewrite(t); for i1:=1 to r1 do begin for j1:=1 to r1 do write(t,mt[i1,j1]:4); WriteLn; end; closeFile(t); AssignFile(fi,fname); rewrite(fi); for i1:=1 to r1 do for j1:=1 to r1 do write(fi,mt[i1,j1]); close(fi); end; end.