Упорядочить массив по фамилиям, имени, отчеству абонентов - Turbo Pascal

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

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

Создать массив -телефонный справочник ,хранящий информацию о 15 абонентах сотовой сети.Каждый элемент справочника хранит следующую информацию об абонентах:ФИО,номертелефона,адрес регистрации,состояние баланса. Упорядочить массив по фамилиям ,имени,отчеству абонентов.Проверить ,если абоненты,имеющие несколько номеров.Составить одномерный массив из сведений об уникальных абонентах.Уникальность абонента определяется его ФИО и адресом регистрации.

Решение задачи: «Упорядочить массив по фамилиям, имени, отчеству абонентов»

textual
Листинг программы
const n=15;
type
  abon=record
    fio:string[30];
    phone:string[11];
    address:string[30];
    bal:real;
  end;
var
  i,j,k:integer;
  a,c:array[1..n] of abon;
  t:abon;
  b:boolean;
begin
  writeln('Выедите ',n,' абонентов:');
  for i:=1 to n do begin
    writeln('******       Абонент #',i,'        *********');
    write('ФИО:');readln(a[i].fio);
    write('Телефон:');readln(a[i].phone);
    write('Адрес:');readln(a[i].address);
    write('Баланс:');readln(a[i].bal);
  end;
  writeln('Сортировка по ФИО:');
  for i:=1 to n-1 do
    for j:=i to n do
      if a[i].fio>a[j].fio then begin
        t:=a[i];
        a[i]:=a[j];
        a[j]:=t;
      end;
   for i:=1 to n do
     writeln(a[i].fio:30,'|',a[i].phone:11,'|',a[i].address:30,'|',a[i].bal:6:2);
   write('Поиск абонентов с нсколькими номерами:');
   b:=false;
   for i:=1 to n-1 do
     if (a[i].fio=a[i+1].fio) and (a[i].address=a[i+1].address) then begin
       b:=true;
       break;
      end;
     if not b then write('не');
     writeln('найдено');
   writeln('Список уникальных абонентов:');
   k:=0;
   for i:=1 to n do begin
     b:=true;
     for j:=1 to n do
       if (i<>j) and ((a[i].fio=a[j].fio) and (a[i].address=a[j].address)) then b:=false;
     if b then begin
       k:=k+1;
       c[k]:=a[i];
      end;
    end;
    for i:=1 to k do
     writeln(c[i].fio:30,'|',c[i].phone:11,'|',c[i].address:30,'|',c[i].bal:6:2);
   readln;
end.

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

const
n = 15; type abon = record fio: string[30]; phone: string[11]; address: string[30]; bal: real; end; var i, j, k: integer; a, c: array[1..n] of abon; t: abon; b: boolean; begin writeln('Выедите ', n, ' абонентов:'); for i := 1 to n do begin writeln('** Абонент #', i, ' **'); write('ФИО:'); readln(a[i].fio); write('Телефон:'); readln(a[i].phone); write('Адрес:'); readln(a[i].address); write('Баланс:'); readln(a[i].bal); end; writeln('Сортировка по ФИО:'); for i := 1 to n-1 do for j := i to n do if a[i].fio > a[j].fio then begin t := a[i]; a[i] := a[j]; a[j] := t; end; for i := 1 to n do write(a[i].fio:30, '|', a[i].phone:11, '|', a[i].address:30, '|', a[i].bal:6:2); write('Поиск абонентов с нсколькими номерами:'); b := false; for i := 1 to n-1 do if (a[i].fio = a[i+1].fio) and (a[i].address = a[i+1].address) then b := true; end; if not b then write('не'); write('Список уникальных абонентов:'); k := 0; for i := 1 to n do begin b := true; for j := 1 to n do if (i <> j) and ((a[i].fio = a[j].fio) and (a[i].address = a[j].address)) then b := false; if b then begin k := k + 1; c[k] := a[i]; end; end; for i := 1 to k do write(c[i].fio:30, '|', c[i].phone:11, '|', c[i].address:30, '|', c[i].bal:6:2); readln; end.

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


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

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

14   голосов , оценка 4.214 из 5
Похожие ответы