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

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

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

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

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

textual
Листинг программы
type      rec = record
          surname: string[20];
          name: string[20];
          tel: integer;
          dr: array [1..3] of integer;
          end;
var n,nmenu,i,j: integer;k:byte; vmas: array [1..8] of rec;s:boolean;
f1:file of rec;
v:rec;
label T;
begin
k:=0;
assign(f1,'Note.dat');
reset(f1);
while not eof(f1) do begin
read(f1,vmas[k+1]);
k:=k+1;
end;
close(f1);
T:
 n:=1;
     writeln       ('<br>');
     writeln       ('|           MENU           |');
     writeln       ('| 1) Ввод данных           |');
     writeln       ('| 2) Вывод людей с др      |');
     writeln       ('| в выбранном месяце       |');
     writeln       ('| 3)Вывод по алфавиту      |');
     writeln       ('| 0) Выход                 |');
     writeln       ('<br>');
     
     while n>0 do
  begin
     writeln ('выберите пункт меню');
     readln  (nmenu);
     
     case nmenu of
       1: //Ввод
       begin
       reset(f1);
       writeln('Введите фамилию');
       readln(v.surname);
       writeln('Введите Имя');
       readln(v.name);
       writeln('Введите телефон');
       readln(v.tel);
       writeln('Введите день рождения через пробел');
       readln(v.dr[1],v.dr[2],v.dr[3]);
       seek(f1,k);
       write(f1,v);  
       close(f1);
        goto T;
       end;
       2:begin 
       writeln('Введите месяц в цифровом представлении, например "01"');
       readln(j);
       s:=false;
       for i:=1 to 8 do 
        if vmas[i].dr[2]=j then begin
        s:=true;
        writeln('День рождения этого человека во введенном месяце',vmas[i].surname,vmas[i].name)
        end;
       if s=false then writeln('Нет таких людей');
       goto T;
       end;
       3:begin
       for j:=1 to 8 do 
       for i:=1 to 7 do
        if vmas[i].surname>vmas[i+1].surname then begin
        v:=vmas[i+1];
        vmas[i+1]:=vmas[i];
        vmas[i]:=v;
        end;
       for i:=1 to 8 do 
       if vmas[i].tel<>0 then
       writeln(vmas[i].surname,vmas[i].name,vmas[i].tel,vmas[i].dr);
       goto T;
       end;
       0:exit;
       end;
       end;
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
Похожие ответы