Страница 1 из 1
Помогите исправить задачку(паскль)
Добавлено: 30 апр 2008, 16:06
ромка)
Имеется текстовый файл. Выяснить, имеются ли в нем строки, начинающиеся с буквы «т». Если да, то определить номер первой из таких строк.
Вот то что смог,вроде бы правильно но не работает:
[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]
Re: Помогите исправить задачку(паскаль)
Добавлено: 30 апр 2008, 16:18
Medved
Так - правильно.
[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]
Re: Помогите исправить задачку(паскль)
Добавлено: 30 апр 2008, 16:21
Medved
Тему переименовал - если задача такая лёгкая, почему вы её не написали?
Re: Помогите исправить задачку(паскль)
Добавлено: 30 апр 2008, 17:57
ромка)
нет она не работает.работает только тогда когда 't' окажеться самым первым символом во всем документе.а если она стоит первой на другой строке кроме первой программа пишет 'not found'/т.е она воспринимает только первую строку
Re: Помогите исправить задачку(паскаль)
Добавлено: 30 апр 2008, 18:10
Medved
[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]
Ну забыл я ещё одну ошибку исправить...
Re: Помогите исправить задачку(паскль)
Добавлено: 30 апр 2008, 18:47
ромка)
какую ошибку?
Re: Помогите исправить задачку(паскль)
Добавлено: 30 апр 2008, 19:46
Medved
[syntax='Delphi']
If S[1]='t' Then
BEGIN
Found:=True;
Break;
END;
[/syntax]
Re: Помогите исправить задачку(паскль)
Добавлено: 30 апр 2008, 23:23
ромка)
я не понял в чём ошибка.ведь прога работает
Re: Помогите исправить задачку(паскль)
Добавлено: 01 май 2008, 06:53
BHy4ok
ромка) писал(а):я не понял в чём ошибка.ведь прога работает
Вам же ответили постом выше. Такое ощущение, что прогу писали не вы, либо просто невнимательность.
Если опираться на тот вариант, что был у вас, то "Break;" т.е. остановка цикла, происходила после того как проверится только первая строка. Дальше естественно ничего у вас и не работало. Смотрите внимательно условие.
Re: Помогите исправить задачку(паскль)
Добавлено: 01 май 2008, 23:17
Хыиуду
Проще говоря:
If S[1]='t' Then
BEGIN
Found:=True;
Break;
END;
- если строка начинается с "т", поставить флаг в истину и прекратить цикл.
if s[1]='t' then find:=true;
break;
- если строка начинается с "т", поставить флаг в истину, после чего В ЛЮБОМ СЛУЧАЕ прекратить цикл