ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Зацикливание.Не знаю как исправить(
  #1  
Старый 21.02.2007, 21:42
mari00
Участник форума
Регистрация: 27.10.2006
Сообщений: 115
Провел на форуме:
820289

Репутация: 119
Отправить сообщение для mari00 с помощью ICQ
По умолчанию Зацикливание.Не знаю как исправить(

Значит написал программу в консоль апликейшен с "юнитом" в котором и сидит почти вся основная часть.При запуске происходит зацикливание на выводе тоесть он пишет одну и ту же фразу много раз.Как исправить?
Заранее спасибо.Написано все в делфи.Тестировалось на Делфи 7.
Код:
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.

а вот и юнит:
Код:
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.
Ток вы просто скоприруйте и запустите в делфи.

Последний раз редактировалось mari00; 21.02.2007 в 21:44..
 
Ответить с цитированием

  #2  
Старый 21.02.2007, 22:37
Friackazoid
Новичок
Регистрация: 06.02.2007
Сообщений: 14
Провел на форуме:
192919

Репутация: 15
По умолчанию

Это ты специально так код отформатировал, чтоб никто не догадался? Хитро - хитро.

Было бы также неплохо чтобы ты сказал какую фразу пишет прога, чтобы примерно определить положение ошибки.

Зацикливание происходит в function rasm:integer; из - за writeln убери его и все будет норм.

ЗЫ: На дельфе не пишу очень давно так что если что не так не обессудьте.
 
Ответить с цитированием

  #3  
Старый 21.02.2007, 23:04
t04
Участник форума
Регистрация: 10.01.2007
Сообщений: 140
Провел на форуме:
246020

Репутация: 105
По умолчанию

Цитата:
Сообщение от Friackazoid  
Это ты специально так код отформатировал, чтоб никто не догадался? Хитро - хитро.
точно точно, короче с тебя плюс к репе!

Код:
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.
Код:
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.
 
Ответить с цитированием

  #4  
Старый 21.02.2007, 23:13
mari00
Участник форума
Регистрация: 27.10.2006
Сообщений: 115
Провел на форуме:
820289

Репутация: 119
Отправить сообщение для mari00 с помощью ICQ
По умолчанию

всем спасибо)
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кому и как правильно пить воду!!! bobob Болталка 6 19.05.2009 18:09
Как стать хакером! foreva Болталка 19 12.12.2007 00:12
Кейлогер на Vb или как правильно играть в Gta!!! je0n Авторские статьи 6 25.05.2007 23:55
Плакаль!!!! Бродил вчера по врачебным форумам, искал инфу про лопнувшие в глазах .... $G@mer Болталка 6 12.10.2006 17:12
Как напакастить форумчанам или как сказать :) Ponchik Форумы 8 02.10.2006 19:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ