Форум программистов, компьютерный форум CyberForum.ru

Записать число римскими цифрами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
kilsza
2 / 2 / 0
Регистрация: 09.01.2014
Сообщений: 10
09.01.2014, 13:28     Записать число римскими цифрами #1
Ребята, прошу помощи, больше некуда обратиться, помогите в написании программы.

Для записи римскими цифрами используются символы I, V, X, L, C, D, M, обозначающие соответственно числа 1, 5, 10, 50,100, 500, 1000. Составить программу, которая запись любого числа, меньшего 4000 арабскими цифрами переводила бы в запись римскими цифрами.

буду очень благодарен. есть подобное на паскале


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Uses crt;
 
const
 
{римские цифры}
RomeDigits: array [1..13] of string[2] =
('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
 
{числа, соответствующие римским цифрам}
ArabicNumbers: array [1..13] of integer =
(1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);
var
arabic: integer; {арабское число}
 
{Функция перевода арабского числа в римское}
function ArabicToRome (n: integer): string;
var
i: integer;
res: string;
begin
res:='';
i:=13; {проверяем от больших чисел к меньшим}
while n>0 do begin
{находим следующее число, из которого будем формировать римскую цифру}
   while ArabicNumbers[i]>n do
   i:=i-1;
   res:=res+RomeDigits[i];
   n:=n-ArabicNumbers[i];
   end;
ArabicToRome := res;
end;
 
{основная программа}
begin
write('Введите арабское число: ');
readln(arabic);
writeln('Римская запись = ',ArabicToRome(arabic));
readln;
end.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2014, 13:28     Записать число римскими цифрами
Посмотрите здесь:

C++ Дано натуральное трехзначное число n. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.
C++ Работа со звуком (как звуковые спектры определённого звукового файла записать цифрами в массив)
C++ Разработать программу, которая заданное целое число от 1 до 1999 выводит на экран римскими цифрами
Вводится число от 1 до 15. Вывести данное число, записанное римскими цифрами C++
Вывод числа словами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
09.01.2014, 14:16     Записать число римскими цифрами #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <conio.h>
#include <string>
 
//{ðèìñêèå öèôðû}
const char *RomeDigits[] =
{
    "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"
};//[0...12]
//{Г·ГЁГ±Г«Г*, ñîîòâåòñòâóþùèå ðèìñêèì öèôðГ*Г¬}
const int ArabicNumbers[] =
{
    1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000
};
 
//{ÔóГ*êöèÿ ïåðåâîäГ* Г*Г°Г*áñêîãî Г·ГЁГ±Г«Г* Гў ðèìñêîå}
std::string ArabicToRome(int n)
{
    std::string res;
    //{ïðîâåðÿåì îò áîëüøèõ Г·ГЁГ±ГҐГ« ГЄ ìåГ*ГјГёГЁГ¬}
    int i = 12;
    while(n > 0)
    {
        //{Г*Г*õîäèì ñëåäóþùåå ÷èñëî, ГЁГ§ êîòîðîãî áóäåì ôîðìèðîâГ*ГІГј ðèìñêóþ öèôðó}
        while(ArabicNumbers[i] > n)
        {
            i = i - 1;
        }
        res = res + RomeDigits[i];
        n = n - ArabicNumbers[i];
    }
    return res;
}
 
int main()
{
    int arabic; //{Г*Г°Г*áñêîå ÷èñëî}
    setlocale(LC_ALL, "RUS");
    std::cout << "Ââåäèòå Г*Г°Г*áñêîå ÷èñëî: ";
    std::cin >> arabic;
    std::cout << "ÐèìñêГ*Гї Г§Г*ГЇГЁГ±Гј = " << ArabicToRome(arabic) << std::endl;
    getch();
    return 0;
}
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
09.01.2014, 14:21     Записать число римскими цифрами #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
 
std::string ArabicToRome(unsigned arabic) {
 
    const struct TNumber {
        std::string rome;
        unsigned arabic;
    }   CNumber[] = {{"I",    1}, {"IV",   4}, {"V",   5}, {"IX",   9},
                     {"X",   10}, {"XL",  40}, {"L",  50}, {"XC",  90},
                     {"C",  100}, {"CD", 400}, {"D", 500}, {"CM", 900},
                     {"M", 1000}};
    unsigned i = sizeof(CNumber) / sizeof(*CNumber) - 1;
    std::string rome;
 
    while (arabic) {
 
        for (; CNumber[i].arabic > arabic; --i) { ; }
 
        rome += CNumber[i].rome;
        arabic -= CNumber[i].arabic;
    }
 
    return rome;
}
 
int main() {
 
    unsigned arabic;
 
    std::cout << "Арабское число: ";
    std::cin >> arabic;
 
    std::cout << "Римская запись = " << ArabicToRome(arabic) << std::endl;
 
    return 0;
}
ilja123
43 / 43 / 6
Регистрация: 24.12.2009
Сообщений: 382
09.01.2014, 14:47     Записать число римскими цифрами #4
А нуля у римлян не было чтоль? И как сделать защиту от дурака? (как проверить, что юзер ввел число )
kilsza
2 / 2 / 0
Регистрация: 09.01.2014
Сообщений: 10
09.01.2014, 15:26  [ТС]     Записать число римскими цифрами #5
Премного благодарен
Yandex
Объявления
09.01.2014, 15:26     Записать число римскими цифрами
Ответ Создать тему
Опции темы

Текущее время: 14:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru