Найдите в базе всех жителей, живущих в разных городах по одинаковому адресу. - Pascal

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

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

Есть база данных по жителям красноярского края, содержащая город, улицу, номер дома и квартиры. Найдите в ней всех жителей, живущих в разных городах по одинаковому адресу. Помогите решить задачу.

Решение задачи: «Найдите в базе всех жителей, живущих в разных городах по одинаковому адресу.»

textual
Листинг программы
  1. type
  2.     TCitizen = record
  3.         city, street, houseNumber: String;
  4.         apartamentNumber: Word; //0 - частный дом
  5.     end;
  6. var
  7.     ar: Array[Byte] Of TCitizen;
  8.     used: Set Of Byte;
  9.     i, j: Byte;
  10.     n: Integer;
  11.     flag: Boolean;
  12. begin
  13.     repeat
  14.         Write('Введите количество жителей в базе (1..256): ');
  15.         ReadLn(n);
  16.     until ((n > 0) And (n < 257));
  17.     for i := 0 to n - 1 do
  18.         with ar[i] do
  19.         begin
  20.             Write('Город? '); ReadLn(city);
  21.             Write('Улица? '); ReadLn(street);
  22.             Write('Номер дома? '); ReadLn(houseNumber);
  23.             Write('Номер квартиры (0 - частный дом)? '); ReadLn(apartamentNumber);
  24.         end;
  25.     WriteLn;
  26.     WriteLn;
  27.     used := [];
  28.     for i := 0 to n - 2 do
  29.         if Not(i in used)
  30.         then
  31.         begin
  32.             j := i + 1;
  33.             repeat
  34.                 flag := ((ar[i].city <> ar[j].city) And (ar[i].street = ar[j].street) And (ar[i].houseNumber = ar[j].houseNumber) And (ar[i].apartamentNumber = ar[j].apartamentNumber) And Not(j in used));
  35.                 Inc(j);
  36.             until ((flag) Or (j >= n));
  37.             if (flag)
  38.             then
  39.             begin
  40.                 with ar[i] do
  41.                     Write(street, ', ', houseNumber, '/', apartamentNumber, ': ', i + 1, ' - ', city);
  42.                 Include(used, i);
  43.                 with ar[j - 1] do
  44.                     Write('; ', j, ' - ', city);
  45.                 Include(used, j - 1);
  46.                 while (j < n) do
  47.                 begin
  48.                     if ((ar[i].city <> ar[j].city) And (ar[i].street = ar[j].street) And (ar[i].houseNumber = ar[j].houseNumber) And (ar[i].apartamentNumber = ar[j].apartamentNumber) And Not (j in used))
  49.                     then
  50.                     begin
  51.                         Write('; ', j + 1, ' - ', ar[j].city);
  52.                         Include(used, j);
  53.                     end;
  54.                     Inc(j);
  55.                 end;
  56.                 WriteLn;
  57.             end;
  58.         end;
  59. end.

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

  1. Определение типа данных TCitizen как структуры с полями city, street, houseNumber и apartamentNumber.
  2. Объявление переменных ar - массива структур TCitizen и used - множества байт.
  3. Объявление переменных i, j - байт, n - целое число и flag - булево значение.
  4. Ввод с клавиатуры значения переменной n до тех пор, пока оно не будет в диапазоне от 1 до 256 включительно.
  5. Цикл для заполнения массива ar данными о жителях (город, улица, номер дома, номер квартиры).
  6. Инициализация множества used как пустого.
  7. Цикл для сравнения всех жителей из базы с целью нахождения совпадений по адресам.
  8. Проверка наличия совпадающих адресов и вывод информации о жителях, обитающих по одинаковым адресам.
  9. Обновление множества used после обнаружения совпадений.
  10. Завершение работы программы. В данном коде реализован поиск жителей, проживающих по одинаковым адресам, и вывод информации о совпадениях.

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


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

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

12   голосов , оценка 3.583 из 5

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

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

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