Поиск в телефонном справочнике - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Написать программу, которая позволяет найти нужные сведения в телефонном справочнике (a:\phone.txt). Программа должна запрашивать фамилию человека и выводить его телефон. Если в справочнике есть одинаковые фамилии, то программа должна вывести список всех людей, имеющих эти фамилии. Рекомендуемый вид экрана во время работы программы приведен ниже. Поиск в телефонном справочнике. Введите фамилию и нажмите <Enter>. Для завершения работы с программой сразу после приглашения нажмите <Enter> —> Петров В справочнике данных о Петров нет.
Листинг программы
  1. { Поиск в телефонном справочнике }
  2. label bye;
  3. var
  4. f: text; { текстовый файл }
  5. obr: string[15]; { фамилия для поиска }
  6. n: integer; { кол-во записей, удовлетворяющих запросу }
  7. fam: string[15]; { фамилия }
  8. name: string[15]; { имя }
  9. tel: string[9]; { номер телефона }
  10. begin
  11. writeln('Поиск в телефонном .справочнике');
  12. Assign(f,'D:\phone.txt');
  13. reset (f); { откроем файл для чтения }
  14. begin
  15. writeln('Файл D:\phone.txt не доступен');
  16. goto bye;
  17. end;
  18. repeat
  19. write('Фамилия ->') ; readln(obr);
  20. if Length(obr) <> 0 then { пользователь ввел строку }
  21. begin
  22. reset(f); { просматриваем файл от начала }
  23. n:=0;
  24. while not EOF(f) do { просматриваем весь файл }
  25. begin
  26. { читаем из файла }
  27. readln(f,fam);
  28. readln(f,name) ;
  29. readln(f,tel);
  30. if fam = obr then { найдена нужная фамилия }
  31. begin
  32. writeln(fam,' ',name, ' ',tel);
  33. n:=n+1;
  34. end;
  35. end;
  36. if n = 0 then writeln('Сведений о ' , obr,' нет.');
  37. end;
  38. until Length(obr) = 0;
  39. bye:
  40. writeln('Для завершения работы нажмите <Enter>.');
  41. readln;
  42. end.
никак не могу понять вроде путь указал правильно... но файл постоянно не доступен помогите буду благодарен!

Решение задачи: «Поиск в телефонном справочнике»

textual
Листинг программы
  1. var f: text;
  2.    obr,fam,name: string[15];
  3.    tel: string[9];
  4.    n: integer;
  5. begin
  6. writeln('Поиск в телефонном .справочнике');
  7. if fileexists('D:\phone.txt') then
  8.  begin
  9.   Assign(f,'D:\phone.txt');
  10.   reset (f)
  11.  end
  12. else
  13.  begin
  14.   writeln('Файл D:\phone.txt не доступен');
  15.   exit;
  16.  end;
  17. write('Фамилия ->') ; readln(obr);
  18. n:=0;
  19. while not EOF(f) do
  20.  begin
  21.   readln(f,fam);
  22.   readln(f,name) ;
  23.   readln(f,tel);
  24.   if fam = obr then
  25.    begin
  26.     writeln(fam,' ',name, ' ',tel);
  27.     n:=1;
  28.    end;
  29.  end;
  30. if n = 0 then writeln('Сведений о ' , obr,' нет.');
  31. close(f)
  32. end.

Объяснение кода листинга программы

  1. Переменная f устанавливается в файл D:\phone.txt.
  2. Если файл существует, то присваивается значение f, иначе выводится сообщение об ошибке и программа завершается.
  3. Выводится сообщение «Фамилия ->» и считывается фамилия из файла.
  4. Переменная n устанавливается в 0.
  5. Запускается цикл чтения данных из файла до конца файла.
  6. В каждой итерации цикла считываются данные о фамилии, имени и телефоне.
  7. Если фамилия совпадает с введенной, то выводится информация о человеке и устанавливается значение n равным 1.
  8. После окончания цикла выводится сообщение, если не было найдено совпадений.
  9. Файл закрывается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.455 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы