Практика программирования (Бейсик, Си, Паскаль)


         

Перевод чисел из римской системы


sd:array [1..13] of string=
( 'I', 'IV, 'V, 'IХ', 'X', 'XL',

'L', 'XC', 'C','CD','D','CM', 'M');
var

k:integer;
s:string;
begin s : = " ;

for k:=13 downto 1 do
while nd[k]<=n do begin
n:=n-nd[k];
s:=s+sd[k];
if n=0 then break;
end;

to_rome:=s;
end; begin

write ('Введите целое число от 1 до 3999 : ' ).; readln(N);

writeln('B римской системе счисления ',N, ' = ', to_rome (N) ) ;
readln;
end.

Задание 3.12. Перевод чисел из римской системы счисления

Составить программу обратного преобразования из строки с записью числа в римской системе счисления в обычное число.

Программа 3_12.bas

REM Перевод чисел из римской системы счисления в арабскую

DEFINT A-Z

DATA 1,4,5,9,10,40,50,90,100,400,500,900,1000

DIM ND(13)

FOR J=0 TO 12: READ ND(J): NEXT J

DATA I,IV,V,IX,X,XL,L,XC,C,CD,D,CM,M

DIM SD$(13)

FOR J=0 TO 12: READ SD$(J): NEXT J

INPUT "Введите число в римской системе счисления : ", R$

J=l: M=0

100 :

FOR К=12 ТО 0 STEP -1

N=LEN(SD$(К))

IF MID$(R$,J,N)=SD$(К) THEN M=M+ND(K): J=J+N: GOTO 100

END IF

IF J>LEN(R$) THEN EXIT FOR
NEXT К

PRINT "В арабской системе счисления ";R$;" = ";M
END

Программа 3_12a.bas

REM Перевод чисел из римской системы счисления в арабскую
DATA 1000,900,500,400,100,90,50,40,10,9,5,4,1
DIM ND(13):
FOR J=0 TO 12: READ ND(J): NEXT J
DATA M,CM,D,CD,C,XC,L,XL,X,IX,V,IV,I
DIM SD$(13): FOR J=0 TO 12: READ SD$(J): NEXT J
INPUT "Введите число в римской системе счисления : ",R$
FOR J=l TO LEN(R$)
FOR K=0 TO 12

N=LEN(SD$(K))

IF MID$(R$,J,N)=SD$(К) THEN M=M+ND(K): J=J+1: K=K-1

END IF NEXT К NEXT J

PRINT "В арабской системе счисления ";R$;" = ";M
END

Программа 3_12.с

/* Перевод чисел из римской системы счисления в арабскую */
#include <stdio.h>

#include <conio.h>
#include <string.h>

main() {

int nd[13]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
char *sd[13]={"M","CM","D","CD","C","XC","L","XL","X",

Содержание  Назад  Вперед