21.12.2009, 19:25
общий
это ответ
Здравствуйте, Масленникова Валерия.
Т.к. формат файла неопределён, задаю его волюнтаристски и привязываю к нему алгоритм решения. Т.е. считаю разделителем полей запятую и требую ее наличия после фамилии, имени, отчества и адреса (кроме телефона). Соответсвенно, если запятая в конце адреса -- последняя в строке, значит телефона нет :). Например, файл data.txt:
Petrov,Andrey,Alekseevich,ul.Nizhniaya d.1 kv.1,123-45-67
Ivanov,Boris,Borisovich,ul.Verhniaya d.2 kv.2,
Sidorov,Vladimir,Viktorovich,ul.Pravaya d.3 kv.3,
Kuznetsov,Gleb,Geogievich,ul.Levaya d.4 kv.4,321-54-76
Приложение:
var f:text;
Imia,Familiya,Adres,s:string;
i:integer;
begin
assign(f,'data.txt');
reset(f);
{Открыть файл данных и читать до конца}
while not eof(f) do
begin
readln(f,s);
{ Очередная запись целиком прочитывается в строку s }
if s[length(s)]=','
{ Если последний символ -- запятая, значит телефона нет }
then begin
i:=pos(',',s);
{ Ищется позиция первой запятой }
Familiya:=copy(s,1,i-1);
{Все, что до нее -- фамилия}
delete(s,1,i);
{Фамилия вместе с запятой удаляется }
i:=pos(',',s);
Imia:=copy(s,1,i-1);
delete(s,1,i);
i:=pos(',',s);
delete(s,1,i);
i:=pos(',',s);
Adres:=copy(s,1,i-1);
delete(s,1,i);
{То же для имени, отчества и адреса. Отчество не запоминается}
writeln(Familiya,';',Imia,';',Adres);
{Вывод}
end;
end;
close(f);
readln;
end.