Консультация № 175489
21.12.2009, 16:46
0.00 руб.
0 4 1
Здравствуйте уважаемые эксперты!прошу Вас помочь решить мне задачу:
Дан текстовый файл, в котором хранятся данные об учениках класса: фамилия, имя отчество, адрес (улица, дом, квартира) и домашний телефон, (если есть). Вывести на экран фамилию, имя и адрес тех учеников, до кого нельзя дозвониться. Текстовый файл подготовить с помощью программы Блокнот

Обсуждение

Неизвестный
21.12.2009, 19:01
общий
Вы даете нам нереальный план - в блокноте используется кодировка ANSII, а в BP - DOS. Или Вам ИМЕННО ТАКОЕ задание?
давно
Профессионал
304622
583
21.12.2009, 19:15
общий
Boriss:
По моему, вы слишком буквально поняли слова про Блокнот. ИМХО должен текстовый файл, а остальное частности.
давно
Профессионал
304622
583
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.
Неизвестный
21.12.2009, 23:05
общий
препод именно такое задание дала
Форма ответа