Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 23:44   #1
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию Записи: ошибка в коде (Delphi)

Всем доброго времени суток! Не получается до конца решить задачу. Помогите пожалуйста со второй процедурой Two_Phone.

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

Упорядочить массив по ФИО абонентов. Проверить есть ли абоненты, имеющие несколько номеров. Уникальность абонента определяется его ФИО и адресом регистрации.}

Код:
program Phonebookk;

{$APPTYPE CONSOLE}

uses
  SysUtils,windows;

type
  Phonebook=record
              SNP:string[30];
              Phone:string[15];
              Phone2:string[15];
              Address:string[50]
            end;
  mas=array[1..15] of Phonebook;

procedure Vvod(var a:mas);
const
  n=5;
type
  Phonebook=record
              SNP:string[30];
              Phone:string[15];
              Phone2:string[15];
              Address:string[50]
            end;
var
  i:integer;
begin
  writeln('Введите данные:');
  for i:=1 to n do
    begin
      write('Фамилия ',i,' абонента: ');
      readln(a[i].SNP);
      write('Телефон ',i,' абонента: ');
      readln(a[i].Phone);
      write('Второй телефон ',i,' абонента: ');
      readln(a[i].Phone2);
      write('Адрес ',i,' абонента: ');
      readln(a[i].Address)}
    end
end;

//Процедура упорядочивания массива по ФИО абонентов.
procedure Sort_SNP(a:mas; x:Phonebook);
const
  n=5;
var
  i,j:integer;
begin
  for i:=1 to n-1 do
    for j:=i+1 to n do
      if a[i].SNP>a[j].SNP then
        begin
          x:=a[i];
          a[i]:=a[j];
          a[j]:=x
        end;
  writeln('Абоненты стоят в алфавитном порядке:');
  for i:=1 to n do
    writeln(a[i].SNP{,' ',a[i].Phone,' ',a[i].Phone2,' ',a[i].Address});
  readln
end;  

//Процедура, которая проверяет есть ли абоненты, имеющие несколько номеров.
procedure Two_Phone(a:mas; x:Phonebook);
const
  n=5;
var
  i:integer;
begin
for i:=1 to n do
  if (a[i].Phone2) in (a[i].SNP) then
  writeln(a[i].Surname);
  readln
end.

var
  x:Phonebook;
  a:mas;
  n,i,j:integer;
begin
  setconsolecp(1251);
  setconsoleoutputcp(1251);
  Vvod(a);
  Sort_SNP(a,x);
  Two_Phone(a,x)
end.
Начинающий програм вне форума Ответить с цитированием
Старый 06.04.2012, 00:48   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Не забудьте протестировать.
Код:
program Phonebookk;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

type
  Phonebook = record
    SNP: string[30];
    Phone: string[15];
    balance: real;
    Address: string[50]
  end;

  mas = array[1..15] of Phonebook;

const
  n = 5;

procedure Vvod(var a: mas);
var
  i: integer;
begin
  writeln('Input data:');
  for i := 1 to n do
  begin
    write('First name of ', i, ' client: ');
    readln(a[i].SNP);
    write('Telephone number of ', i, ' client: ');
    readln(a[i].Phone);
    write('Balance of ', i, ' client: ');
    readln(a[i].balance);
    write('Address of ', i, ' client: ');
    readln(a[i].Address);
  end
end;

//Процедура упорядочивания массива по ФИО абонентов.

procedure Sort_SNP(var a: mas);
var
  i, j: integer;
  x: Phonebook;
begin
  for i := 1 to n - 1 do
    for j := i + 1 to n do
      if a[i].SNP > a[j].SNP then
      begin
        x := a[i];
        a[i] := a[j];
        a[j] := x
      end;
  writeln('Clients are sorted in alphabetical order:');
  for i := 1 to n do
    writeln(a[i].SNP {,' ',a[i].Phone,' ',a[i].Phone2,' ',a[i].Address});
end;

//Процедура, которая проверяет есть ли абоненты, имеющие несколько номеров.

procedure SomePhone(a: mas);
var
  i, b, e: integer;
begin
  b := 1;
  e := 1;
  while (b <= n)and(e<=n) do
  begin
    while (b <= n)and(e<=n) and (a[b].SNP = a[e].SNP) and (a[b].Address = a[e].Address) do
      inc(e);
    if e - b > 1 then
      writeln('Client ', a[b].SNP, ' have ', e - b, ' phone numbers');
    b := e;
    inc(e);
  end;
end;

var
  a: mas;
begin
  Vvod(a);
  Sort_SNP(a);
  SomePhone(a);
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 06.04.2012, 01:10   #3
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Конечно протестирую! Я Вам очень благодарен!
Начинающий програм вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в коде Delphi Начинающий програм Помощь студентам 6 06.02.2012 19:52
В коде ошибка (Delphi). Начинающий програм Помощь студентам 0 08.12.2011 19:58
Ошибка в коде программы Delphi Начинающий програм Помощь студентам 5 07.12.2011 23:46
Ошибка в коде программы (Delphi) Начинающий програм Помощь студентам 4 03.12.2011 22:28
Delphi+Excel ошибка в коде Tirendus БД в Delphi 5 31.08.2009 10:47