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

С++ для начинающих

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

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

09.01.2014, 13:28. Просмотров 1882. Ответов 4
Метки нет (Все метки)

Ребята, прошу помощи, больше некуда обратиться, помогите в написании программы.

Для записи римскими цифрами используются символы 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++
C++ Работа со звуком (как звуковые спектры определённого звукового файла записать цифрами в массив)
C++ Разработать программу, которая заданное целое число от 1 до 1999 выводит на экран римскими цифрами
Вводится число от 1 до 15. Вывести данное число, записанное римскими цифрами C++
C++ Вывести число с тремя цифрами после запятой
C++ Число символов строке не являющихся ни буквами, ни цифрами
C++ Записать данное число (от 1 до 3999) римскими цифрами
Найти минимальное число между 1 и 3 цифрами. C++
C++ Проверка текста на правильность записи числа от 1 до 1999 римскими цифрами
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
1700 / 1193 / 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     Записать число римскими цифрами
Ответ Создать тему
Опции темы

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