кодесурса
«C

Упражнения C: преобразование заданного целого числа в римское число

script1adsense2code
script1adsense3code

Программирование на C: упражнение 6 с решением

Напишите C-программу для преобразования заданного целого числа в римское число.

 Римские цифры представлены семью различными символами: I, V, X, L, C, D и M.
Значение символа
Я 1
V 5
X 10
Л 50
С 100
D 500
М 1000

Код C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void num_to_char(char **num, int bit, int n)
{
    int i;
    char low, mid, high;
    char *p = *num;
    switch (n) {
    case 2:
        low ='C';
        mid ='D';
        high ='M';
    break;
    case 1:
        low ='X';
        mid ='L';
        high ='C';
    break;
    case 0:
        low ='I';
        mid ='V';
        high ='X';
    break;
    }
    if (bit > 0) {
        switch (bit) {
        case 1:
        case 2:
        case 3:
            for (i = 0; i < bit; i++) {
                *p++ = low;
            }
            break;
        case 4:
            *p++ = low;
            *p++ = mid;
            break;
        case 5:
            *p++ = mid;
            break;
        case 6:
        case 7:
        case 8:
            *p++ = mid;
            for (i = 5; i < bit; i++) {
                *p++ = low;
            }
            break;
        case 9:
            *p++ = low;
            *p++ = high;
            break;
        }
    }
    *num = p;
}
static char roman_numeral[64];
static char *int_to_roman(int num)
{
    char *p = &roman_numeral[0];
    int thousand_bit_num = num / 1000;
    int hundred_bit_num = (num % 1000) / 100;
    int ten_bit_num = (num % 100) / 10;
    int one_bit_num = num % 10;
    int i;
    memset(roman_numeral, 0, sizeof(roman_numeral));
    if (thousand_bit_num > 0) {
        if (thousand_bit_num < 4) {
            for (i = 0; i < thousand_bit_num; i++) {
                *p++ ='M';
            }
        }
    }
    num_to_char(&p, hundred_bit_num, 2);
    num_to_char(&p, ten_bit_num, 1);
    num_to_char(&p, one_bit_num, 0);
    return roman_numeral;
}
int main(void)
 {
	int n = 12; 
	printf("Original integer: %d", n);
    printf("\nRoman number of the said integer: %s", int_to_roman(n));
    return 0;
}

Пример вывода:

 Исходное целое число: 12
Римское число названного целого числа: XII

Иллюстрированная презентация:

«C

Блок - схема:

«C

Решение

Внесите свой код и комментарии через Disqus.

Предыдущий: Напишите программирование на C, чтобы перевернуть цифры заданного 32-разрядного целого числа со знаком.
Далее: Напишите программу на C, чтобы преобразовать данное римское число в целое число.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code