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

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


textual

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

type
    TCitizen = record
        city, street, houseNumber: String;
        apartamentNumber: Word; //0 - частный дом
    end;
var
    ar: Array[Byte] Of TCitizen;
    used: Set Of Byte;
    i, j: Byte;
    n: Integer;
    flag: Boolean;
begin
    repeat
        Write('Введите количество жителей в базе (1..256): ');
        ReadLn(n);
    until ((n > 0) And (n < 257));
    for i := 0 to n - 1 do
        with ar[i] do
        begin
            Write('Город? '); ReadLn(city);
            Write('Улица? '); ReadLn(street);
            Write('Номер дома? '); ReadLn(houseNumber);
            Write('Номер квартиры (0 - частный дом)? '); ReadLn(apartamentNumber);
        end;
    WriteLn;
    WriteLn;
    used := [];
    for i := 0 to n - 2 do
        if Not(i in used)
        then
        begin
            j := i + 1;
            repeat
                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));
                Inc(j);
            until ((flag) Or (j >= n));
            if (flag)
            then
            begin
                with ar[i] do
                    Write(street, ', ', houseNumber, '/', apartamentNumber, ': ', i + 1, ' - ', city);
                Include(used, i);
                with ar[j - 1] do
                    Write('; ', j, ' - ', city);
                Include(used, j - 1);
                while (j < n) do
                begin
                    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))
                    then
                    begin
                        Write('; ', j + 1, ' - ', ar[j].city);
                        Include(used, j);
                    end;
                    Inc(j);
                end;
                WriteLn;
            end;
        end;
end.

СДЕЛАЙТЕ РЕПОСТ

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



Похожие ответы
  1. В заданной строке текста слова разделены произвольным числом пробелов. Выписать все слова, в которых отсутствуют буквы(б,в,г,д,с,л,м,н,р).

  1. Составить программу для вычисления значения функции y=ln(1-x) с помощью разложения функции в степенной ряд: Ln(1-x) =-x/1-(x)^2/2-(x)^3/3-(x)^4/4...-(x)^n/n+... Помогите пжл.

  1. Помогите решить 0,1sin(x)+x^2-1=0 С точностью Е=10^-4 Интервал изоляции [0,8;1,0] Зарание спасибо!

  1. Составить программу. Пусть дан массив из n элементов.Каждый отрицательный элемент замените полусуммой тех двух элементов, которые стоят с ним справа и слева. Помогите пожалуйста.

  1. Доброго дня всем. Такое вот задание: Описать, используя структуру данных запись, завод (наименование станка, время простоя в месяц, время работы в месяц). Составить программу, определяющую общее время простоя на заводе, списки станков, не имеющих простоя, относительное время простоя всех и каждого станка. Похожие уже написанные программы смотрел, под редактирование не подошли. Помогите пожалуйста с написанием

  1. Составить программу формирования по вещественной квадратной матрице А={a}_{ij},i=1/n,j=1/m логического вектора B={b}_{i},i=1/n,где {b}_{i} имеет значение true, если наибольший элемент в строке с номером i матрицы А не больше заданного Х,и значение false-в противном случае

  1. Помогите написать программу: В массиве из 10 целых чисел подсчитать сумму элементов более чем в 2 рах превышающих минимальный.

  1. Для введенного с клавиатуры произвольного целого числа определить все возможные целые делители, кроме 1 и самого числа. Если число не имеет таких делителей, сообщить об этом. (Например: для 20 – 2,4,5,10; для 21 - 3,7; для 23 – «нет делителей»).

  1. Помогите найти сумму компонентов a1+aN, a2+aN-1, a3+aN-2, ..., ak+am для k<=m.

  1. - Написать программу, которая читает с клавиатуры произвольную строку символов, преобразует ее и выводит результат на дисплей в виде строки. - Длина строки заранее не вводится, а определяется после окончания ввода с клавиатуры. - В строке группы символов разделяются одним или несколькими пробелами. Пробелы могут находиться в начале и в конце строки. Группа символов - последовательность букв, цифр или знаков, отделенная пробелами от других групп или находящаяся в начале/конце строки. - Все буквы считать вводимыми только в нижнем регистре, Заглавные буквы не рассматривать. - В заголовок окна программы записать свои данные: имя, фамилию и номер варианта. Примеры возможных строк: ‘ 12.3 tryi yu ()?*‘, ‘ 6е-1 swty +12_3‘ Напечатать: Группы символов, состоящие только из латинских букв, если в них есть повторяющиеся буквы.