Даны два пятизначных числа, необходимо найти количество совпадений по две одинаковые цифры в равносильных разрядах чисел, а так же количество совпадений по две одинаковые цифры в различных разрядах этих чисел. Цифра, которая уже участвовала в одной паре совпадения, не учитывается повторно. Например, даны числа 12345 и 27376. Количество совпадений одинаковых цифр в равносильном разряде равно 1 (это цифра 3), количество совпадений одинаковых цифр в различных разрядах равно 1 (это цифра 2).
a, b – заданные числа;
a_arr, b_arr – массивы цифр, из которых состоят числа;
a_dig, b_dig – массивы для хранения информации о совпавших цифрах.
{2} Числа раскладываются на цифры, которые размещаются в массивах. Нахождение остатка по основанию 10 дает младший разряд числа. При этом сами числа постепенно уменьшаются, избавляясь от текущих младших разрядов (div 10). Поскольку извлечение цифр происходит с конца, массивы, куда они заносятся, "прокручиваются" с конца: сначала заполняются пятые элементы массива, затем четверные и т.д.
{3} Для того, чтобы найти одинаковые цифры в равносильных разрядах, достаточно сравнить элементы массивов, находящиеся в одинаковых позициях двух массивов. При этом надо где-то сохранить информацию о разрядах, цифры которых совпали. Введем два дополнительных массива (a_dig и b_dig). Изначально в языке программирования Pascal массивы заполнены нулями. Пусть элементы этих массивов соответствуют разрядам чисел. Если цифра числа нашла себе пару среди такого же разряда второго числа, то в соответствующие разрядам ячейки массивов записываются единицы.
{4} Берем очередной элемент массива первого числа. Если соответствующий ему элемент из массива a_dig равен нулю (что значит, совпадений не было), то сравниваем его со всеми элементами второго массива числа, которые также не нашли себе пару. Если при переборе совпадение находится, то в соответствующие ячейки массивов a_dig и b_dig помещаются цифры 2.
{5} Количество одинаковых цифр в равносильных разрядах равно количеству единиц в массиве a_dig.
{6} Количество одинаковых цифр в различных разрядах равно количеству двоек в массиве a_dig.
Массив b_dig содержит туже информацию о количестве единиц и двоек. Однако двойки находятся в иных элементах массива.
const n = 5; var a, b: longint; a_arr, b_arr: array[1..n] of byte; a_dig, b_dig: array[1..n] of byte; i,j: byte; begin {1} write('Первое число: '); readln(a); write('Второе число: '); readln(b); {2} for i:=n downto 1 do begin a_arr[i] := a mod 10; a := a div 10; b_arr[i] := b mod 10; b := b div 10; end; {3} for i:=1 to n do if a_arr[i] = b_arr[i] then begin a_dig[i] := 1; b_dig[i] := 1; end; {4} for i:=1 to n do if a_dig[i] = 0 then for j:=1 to n do if b_dig[j] = 0 then if a_arr[i] = b_arr[j] then begin a_dig[i] := 2; b_dig[j] := 2; end; {5} write('Кол-во одинаковых цифр в равносильных разрядах: '); j := 0; for i:=1 to n do if a_dig[i] = 1 then j := j + 1; writeln(j); {6} write('Кол-во одинаковых цифр в различных разрядах: '); j := 0; for i:=1 to n do if a_dig[i] = 2 then j := j + 1; writeln(j); readln; end.
Комментарии
Спасибо
Спасибо, господа. Странно, правда, что на наши лабораторные берут вот эти задания (без каких-либо изменений) и дают нам.
Познавательно, Спасибо
Познавательно, Спасибо
Создать массив из 6-значных строк!
Создать массив из 6-значных строк!Со всеми возможными неповторяющимися вариациями латинских букв и чисел!И записать в текстовый файл!Как-то так!
Пример:
000000
000001
000002
....
12jhdo
12jhdp
12jhdr
....
Спасибо большое.))
Ребят вы мне очень помогли ....)))!
Спасибо !
Спасибо !