Pascal ABC.net - модулиДаны два массива натуральных чисел. В одном из
Pascal ABC.net - модули
Даны два массива естественных чисел. В одном из их числа записаны в десятичной системе счисления, в приятелем в римской. Выписать числа, которые встречаются и в том, и в приятелем массиве, либо сообщить об их неимении. В случае положительного ответа итог представить в римской и десятичной системах счисления.
Решить с внедрением модулей спомощью подпрограмм (или несколько подпрограмм), а позже обратиться из собственной программки к этому модулю
Помогите, завтра заключительный денек !)
1 ответ
Светлана Досадушкина
Решение в PascalABC.NET 3.4
*** этот файл мы обязаны именовать nekkit20.pas ***
*** после его компиляции будет сотворен модуль ***
unit nekkit20;
type
tra=(string,integer);
function RomeToArab(s:string):integer;
// Перевод римских чисел (не великих MMMCMXCIX) в арабские
begin
var ar:='IVXLCDM';
var aa:=Arr(1,5,10,50,100,500,1000);
var n:=0;
Result:=0;
foreach var c in s do
begin
var c1:=n;
n:=aa[Pos(c,ar)-1];
Result+=n+(ngt;c1?-2*c1:0)
end;
end;
function Equal(r:array of string; a:array of integer):sequence of tra;
// Отдаёт последовательность кортежей
// из массива римских чисел (массив r),
// для которых есть соответствие в массиве арабских чисел (массив a)
begin
foreach var q in r do
begin
var n:=RomeToArab(q);
if a.IndexOf(n)gt;-1 then yield((q,n))
end
end;
end.
*** а это иной файл с хоть каким именем, кроме nekkit20 ***
*** он обращается к молулю nekkit20 ***
uses nekkit20;
begin
var sr:=Arr('DXVIII','LXIII','MII','XIV','LXXXVIII','CXCVI');
var ar:=Arr(14,98,196,1002,518,64,87);
var R:=Equal(sr,ar);
if R.Count=-1 then Writeln('Нет совпадений')
else
foreach var t in R do
Writeln(t[0],' = ',t[1])
end.
*** Контрольный пример ***
DXVIII = 518
MII = 1002
XIV = 14
CXCVI = 196
*** этот файл мы обязаны именовать nekkit20.pas ***
*** после его компиляции будет сотворен модуль ***
unit nekkit20;
type
tra=(string,integer);
function RomeToArab(s:string):integer;
// Перевод римских чисел (не великих MMMCMXCIX) в арабские
begin
var ar:='IVXLCDM';
var aa:=Arr(1,5,10,50,100,500,1000);
var n:=0;
Result:=0;
foreach var c in s do
begin
var c1:=n;
n:=aa[Pos(c,ar)-1];
Result+=n+(ngt;c1?-2*c1:0)
end;
end;
function Equal(r:array of string; a:array of integer):sequence of tra;
// Отдаёт последовательность кортежей
// из массива римских чисел (массив r),
// для которых есть соответствие в массиве арабских чисел (массив a)
begin
foreach var q in r do
begin
var n:=RomeToArab(q);
if a.IndexOf(n)gt;-1 then yield((q,n))
end
end;
end.
*** а это иной файл с хоть каким именем, кроме nekkit20 ***
*** он обращается к молулю nekkit20 ***
uses nekkit20;
begin
var sr:=Arr('DXVIII','LXIII','MII','XIV','LXXXVIII','CXCVI');
var ar:=Arr(14,98,196,1002,518,64,87);
var R:=Equal(sr,ar);
if R.Count=-1 then Writeln('Нет совпадений')
else
foreach var t in R do
Writeln(t[0],' = ',t[1])
end.
*** Контрольный пример ***
DXVIII = 518
MII = 1002
XIV = 14
CXCVI = 196
Женя Сердин
thank you!!
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
"Три толстяка" Называли эту площадь Площадью Звезды последующей причине.
Русский язык.
на одной грядке коротышки посадили 3 ряда морковок по 8 штук
Разные вопросы.
эссе на тему какое образование дается в каждой семье
Қазақ тiлi.
Put the verb in brackets into the Present Indefinite.
1The Volga ,
Английский язык.
Сколько стоит коктейль молочный? Точную цену надо?
Математика.
Составить рассказ Из чего складывался культ монарха помазанника Божьего?
История.
задание экономиоти
Рассмотри ситуацию: человек живёт на Крайнем Се-вере. С помощью каких
Экономика.
Человек живет на Крайнем Севере. С помощью каких благ удовлетворяются потребности
Экономика.
там лежат три яйца.у дома рос клен.Это гнездо сойки.на клёне гнездо
Русский язык.
Тыныштық күйіндегі карусель 35 с-та 3,0 рад/с бұрыштық жылдамдықпен үдей қозғалады.
Разные вопросы.
Облако тегов