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


Задачи, советы и ответы - часть 19


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",




Начало  Назад  Вперед



Книжный магазин