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


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


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

RЕМ Перевод чисел в римскую систему

DECLARE FUNCTION torome$ (M%)

КЕМ Перевод арабских чисел в римскую систему счисления

DEFINT A-Z

COMMON SHARED ND()

COMMON SHARED SD$()

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 "Введите целое число от 1 до 3999 : ", N

IF N<1 OR N>3999 THEN PRINT "Число вне диапазона":

END

PRINT "В римской системе счисления "; N;" = ";torome$(N)

END

FUNCTION torome$ (M)

SHARED ND(), SD$()

S$=""

FOR K=12 TO 0 STEP -1

WHILE ND(K)<=M

M=M-ND(K): S$=S$+SD$(K)

IF M=0 THEN EXIT FOR

WEND

NEXT К

torome$=S$

END FUNCTION

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

/* Перевод чисел в римскую систему счисления */

#include <stdio.h>.

#include <conio.h>

#include <string.h>

char *to_rome(int n) ;

main() {

int N;

printf("\n Введите целое число от 1 до 3999 : ");

scanf("%d",&N); if (N<0 | | N>3999) {

printf("\n Число вне диапазона");

getch();

exit(0); }

printf("\n B римской системе счисления %d = %s",N,to_rome(N));

getch();

}

/*-------------------------------*/

char *to_rome(int n) {

int k;

static char s[20]="";

int nd[13]={l,4,5,9,10,40,50,90,100,400,_500,900,1000};

char *sd[13]={"I","IV","V","IX","X","XL",

"L","XC","C","CD","D","CM","M"}; for(k=12; k>=0; k—) {

while(nd[k]<=n) {

n=n-nd[k]; strcat(s,sd[k]);

if(n==0) break;

} }

return s; }

Программа 3_11.pas

program in_rome;

{Перевод чисел в римскую систему счисления}

var

N:1..3999;

function to_rome(n:integer): string;

const

nd:array [1..13] of integer=

(1,4,5,9,10,40,50,90,100,400,500,900,1000) ;




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