![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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, установив выходное ее значение. |