Модули: найти в двух массивах (десятичных и римских чисел) одинаковые числа или сообщить об их отсутствии - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д