![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() нужно найти в массиве первое положительное число , а оно у меня находит последнее.
Код:
procedure TForm3.btn2Click(Sender: TObject); var m,i: Integer; f: TextFile; flag:boolean; begin flag:=false; mmo1.Lines.Clear; assignFile (f,'c:\file1.txt'); reset(f); while not eof(f) do begin while not Eoln(f) do begin read(f,i); if (i<0) then begin m:=i; flag:=true; mmo1.Text:=mmo1.Text+' '+IntToStr(i); end; Readln(f); mmo1.Lines.Add(''); end; CloseFile(f); mmo1.Lines.Add('первое отрицательное ='+inttostr(m)); подскажите , что не так ![]() Последний раз редактировалось Admin, 14.10.2010 в 22:32. |
#2
|
|||
|
|||
![]() Тебе надо при этом прервать цикл.
Код:
procedure TForm3.btn2Click(Sender: TObject); var m,i: Integer; f: TextFile; flag:boolean; begin flag:=false; mmo1.Lines.Clear; assignFile (f,'c:\file1.txt'); reset(f); while not eof(f) do begin while not Eoln(f) do begin read(f,i); if (i<0) then begin m:=i; flag:=true; mmo1.Text:=mmo1.Text+' '+IntToStr(i); mmo1.Lines.Add('первое отрицательное ='+inttostr(m)); break; end; if flag then break; Readln(f); mmo1.Lines.Add(''); end; CloseFile(f); Первый бряк прерывает внутренний цикл по строке. Второй - внешний по строкам (файлу). Но я бы сделал подругому (бо как понятнее). Я бы сначала считал файл во временный массив, а уже в нем бы делал все поиски. И выносил бы их, если это возможно, в отдельные функции, бо как из функции можно сделать Exit, установив выходное ее значение. |