Модули: найти в двух массивах (десятичных и римских чисел) одинаковые числа или сообщить об их отсутствии - PascalABC.NET

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

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

Даны два массива натуральных чисел. В одном из них числа записаны в десятичной системе счисления, в другом - в римской. Выписать числа, которые встречаются и в том, и в другом массиве, или сообщить об их отсутсвии. В случае положительного ответа результат представить в римской и десятичной системах счисления.

Решение задачи: «Модули: найти в двух массивах (десятичных и римских чисел) одинаковые числа или сообщить об их отсутствии»

textual
Листинг программы
//будем брать числа до 100
const
r:array[1..9] of string[2]=('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C');
a: array[1..9] of integer=(1, 4, 5, 9, 10, 40, 50, 90, 100);
//перевод арабских в римские
function Roman(n:integer):string;
var res:string;
    i:integer;
begin
res:='';
i:=9;
while n>0 do
 begin
  while a[i]>n do dec(i);
  res:=res+r[i];
  dec(n,a[i]);
 end;
roman:=res;
end;
var ar:array[1..100] of byte;
    rm:array[1..100] of string[2];
    m:set of byte;
    n,k:byte;
begin
randomize;
repeat
write('Введите размер массивов от 10 до 100 n=');
readln(n);
until n in [10..100];
writeln('Массив арабских чисел');
for var i:=1 to n do
 begin
  ar[i]:=1+random(100);
  write(ar[i]:4);
  if i mod 20=0 then writeln;
 end;
writeln;
writeln('Массив римских чисел');
for var i:=1 to n do
 begin
  rm[i]:=Roman(1+random(100));
  write(rm[i]:4);
  if i mod 20=0 then writeln;
 end;
writeln; 
m:=[];
for var i:=1 to n do
for var j:=1 to n do
if (Roman(ar[i])=rm[j])and not(ar[i] in m) then
 begin
  include(m,ar[i]);
  writeln(ar[i],'=',rm[j]);
 end; 
if m=[] then write('В массивах нет одинаковых чисел') 
end.

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


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

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

8   голосов , оценка 3.875 из 5
Похожие ответы