Описать сведения о записной книжке - PascalABC.NET

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

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

Пожалуйста, помогите с этим заданием 1. Описать файл записей с именем note.dat, содержащий следующие поля: фамилия, имя, номер телефона, день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия:
  • ввод данных с клавиатуры в массив, состоящий из восьми элементов типа Note, с упорядочением записей по алфавиту;
  • вывод на экран информации о людях, чьи дни рождения приходятся на месяц, значение которого введено с клавиатуры, а если таких нет - вывод на экран соответствующего сообщения;

Решение задачи: «Описать сведения о записной книжке»

textual
Листинг программы
  1. type      rec = record
  2.           surname: string[20];
  3.           name: string[20];
  4.           tel: integer;
  5.           dr: array [1..3] of integer;
  6.           end;
  7. var n,nmenu,i,j: integer;k:byte; vmas: array [1..8] of rec;s:boolean;
  8. f1:file of rec;
  9. v:rec;
  10. label T;
  11. begin
  12. k:=0;
  13. assign(f1,'Note.dat');
  14. reset(f1);
  15. while not eof(f1) do begin
  16. read(f1,vmas[k+1]);
  17. k:=k+1;
  18. end;
  19. close(f1);
  20. T:
  21.  n:=1;
  22.      writeln       ('<br>');
  23.      writeln       ('|           MENU           |');
  24.      writeln       ('| 1) Ввод данных           |');
  25.      writeln       ('| 2) Вывод людей с др      |');
  26.      writeln       ('| в выбранном месяце       |');
  27.      writeln       ('| 3)Вывод по алфавиту      |');
  28.      writeln       ('| 0) Выход                 |');
  29.      writeln       ('<br>');
  30.      
  31.      while n>0 do
  32.   begin
  33.      writeln ('выберите пункт меню');
  34.      readln  (nmenu);
  35.      
  36.      case nmenu of
  37.        1: //Ввод
  38.        begin
  39.        reset(f1);
  40.        writeln('Введите фамилию');
  41.        readln(v.surname);
  42.        writeln('Введите Имя');
  43.        readln(v.name);
  44.        writeln('Введите телефон');
  45.        readln(v.tel);
  46.        writeln('Введите день рождения через пробел');
  47.        readln(v.dr[1],v.dr[2],v.dr[3]);
  48.        seek(f1,k);
  49.        write(f1,v);  
  50.        close(f1);
  51.         goto T;
  52.        end;
  53.        2:begin
  54.        writeln('Введите месяц в цифровом представлении, например "01"');
  55.        readln(j);
  56.        s:=false;
  57.        for i:=1 to 8 do
  58.         if vmas[i].dr[2]=j then begin
  59.         s:=true;
  60.         writeln('День рождения этого человека во введенном месяце',vmas[i].surname,vmas[i].name)
  61.         end;
  62.        if s=false then writeln('Нет таких людей');
  63.        goto T;
  64.        end;
  65.        3:begin
  66.        for j:=1 to 8 do
  67.        for i:=1 to 7 do
  68.         if vmas[i].surname>vmas[i+1].surname then begin
  69.         v:=vmas[i+1];
  70.         vmas[i+1]:=vmas[i];
  71.         vmas[i]:=v;
  72.         end;
  73.        for i:=1 to 8 do
  74.        if vmas[i].tel<>0 then
  75.        writeln(vmas[i].surname,vmas[i].name,vmas[i].tel,vmas[i].dr);
  76.        goto T;
  77.        end;
  78.        0:exit;
  79.        end;
  80.        end;
  81. end.

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

  1. Объявлен тип записи rec, который содержит поля surname, name, tel и dr.
  2. Объявлены переменные n, nmenu, i, j, k, vmas, s, f1, v и T.
  3. Задано значение k=0 и открывается файл f1 с именем Note.dat.
  4. В цикле while не eof(f1) считываются данные из файла f1 и записываются в массив vmas.
  5. В блоке T создается меню с пунктами для выбора.
  6. В цикле while n>0 происходит взаимодействие с пользователем:
    • Вводится номер пункта меню (nmenu).
    • В зависимости от выбранного пункта меню выполняются соответствующие действия:
      • При выборе пункта 1 происходит ввод данных о человеке и запись их в файл f1.
      • При выборе пункта 2 происходит вывод людей с заданным днем рождения.
      • При выборе пункта 3 происходит сортировка записей в алфавитном порядке по фамилии и их вывод.
      • При выборе пункта 0 происходит выход из программы.
  7. В случае ошибки или некорректного ввода данных программа возвращает сообщение об ошибке.

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


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

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

10   голосов , оценка 3.7 из 5

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

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

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