Упорядочить массив по фамилиям, имени, отчеству абонентов - Turbo Pascal
Формулировка задачи:
Решение задачи: «Упорядочить массив по фамилиям, имени, отчеству абонентов»
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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д