Помогите исправить задачку(паскль)
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Имеется текстовый файл. Выяснить, имеются ли в нем строки, начинающиеся с буквы «т». Если да, то определить номер первой из таких строк.
Вот то что смог,вроде бы правильно но не работает:
[syntax='Delphi']
const namef='c:\ffile.txt';
var n:word;
s:string;
find:boolean;
f:text;
begin
assign(f,namef);
reset(f);
n:=0;
find:=false;
while not eof(f) do
begin
readln(f,s);
inc(n);
if s[1]='t' then find:=true;
break;
end;
end.
if find then write(n);
else write('ne naydenno');
end.
[/syntax]
Вот то что смог,вроде бы правильно но не работает:
[syntax='Delphi']
const namef='c:\ffile.txt';
var n:word;
s:string;
find:boolean;
f:text;
begin
assign(f,namef);
reset(f);
n:=0;
find:=false;
while not eof(f) do
begin
readln(f,s);
inc(n);
if s[1]='t' then find:=true;
break;
end;
end.
if find then write(n);
else write('ne naydenno');
end.
[/syntax]
Так - правильно.
[syntax='Delphi']
Program Corrected;
Const FileName='c:\ffile.txt';
Var N:Integer;
S:String;
Found:Boolean;
F:Text;
Begin
Assign(F,FileName);
Reset(F);
N:=0;
Find:=False;
While Not EOF(F) Do
Begin
Readln(F,S);
Inc(N);
If S[1]='t' Then Found:=True;
Break;
End;
If Found Then Write(N)
Else Write('Not found');
Close(F);
End.
[/syntax]
[syntax='Delphi']
Program Corrected;
Const FileName='c:\ffile.txt';
Var N:Integer;
S:String;
Found:Boolean;
F:Text;
Begin
Assign(F,FileName);
Reset(F);
N:=0;
Find:=False;
While Not EOF(F) Do
Begin
Readln(F,S);
Inc(N);
If S[1]='t' Then Found:=True;
Break;
End;
If Found Then Write(N)
Else Write('Not found');
Close(F);
End.
[/syntax]
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
[OK]
Тему переименовал - если задача такая лёгкая, почему вы её не написали?
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
[OK]
нет она не работает.работает только тогда когда 't' окажеться самым первым символом во всем документе.а если она стоит первой на другой строке кроме первой программа пишет 'not found'/т.е она воспринимает только первую строку
[syntax='Delphi']
Program Corrected;
Const FileName='c:\ffile.txt';
Var N:Integer;
S:String;
Found:Boolean;
F:Text;
Begin
Assign(F,FileName);
Reset(F);
N:=0;
Found:=False;
While Not EOF(F) Do
Begin
Readln(F,S);
Inc(N);
If S[1]='t' Then
Begin
Found:=True;
Break;
End;
End;
If Found Then Write(N)
Else Write('Not found');
Close(F);
End.
[/syntax]
Ну забыл я ещё одну ошибку исправить...
Program Corrected;
Const FileName='c:\ffile.txt';
Var N:Integer;
S:String;
Found:Boolean;
F:Text;
Begin
Assign(F,FileName);
Reset(F);
N:=0;
Found:=False;
While Not EOF(F) Do
Begin
Readln(F,S);
Inc(N);
If S[1]='t' Then
Begin
Found:=True;
Break;
End;
End;
If Found Then Write(N)
Else Write('Not found');
Close(F);
End.
[/syntax]
Ну забыл я ещё одну ошибку исправить...
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
[OK]
[syntax='Delphi']
If S[1]='t' Then
BEGIN
Found:=True;
Break;
END;
[/syntax]
If S[1]='t' Then
BEGIN
Found:=True;
Break;
END;
[/syntax]
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
[OK]
я не понял в чём ошибка.ведь прога работает
ромка) писал(а):я не понял в чём ошибка.ведь прога работает
Вам же ответили постом выше. Такое ощущение, что прогу писали не вы, либо просто невнимательность.
Если опираться на тот вариант, что был у вас, то "Break;" т.е. остановка цикла, происходила после того как проверится только первая строка. Дальше естественно ничего у вас и не работало. Смотрите внимательно условие.
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Проще говоря:
If S[1]='t' Then
BEGIN
Found:=True;
Break;
END;
- если строка начинается с "т", поставить флаг в истину и прекратить цикл.
if s[1]='t' then find:=true;
break;
- если строка начинается с "т", поставить флаг в истину, после чего В ЛЮБОМ СЛУЧАЕ прекратить цикл
If S[1]='t' Then
BEGIN
Found:=True;
Break;
END;
- если строка начинается с "т", поставить флаг в истину и прекратить цикл.
if s[1]='t' then find:=true;
break;
- если строка начинается с "т", поставить флаг в истину, после чего В ЛЮБОМ СЛУЧАЕ прекратить цикл
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.