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

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

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

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

09.01.2014, 13:28. Просмотров 2003. Ответов 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++):

Записать данное число (от 1 до 3999) римскими цифрами - C++
Написать программу,записывающую данное число в интервале от 1 до 3999 Римскими цифрами. I – 1 V – 5 X – 10 L – 50 C – 100 D –...

Вводится число от 1 до 15. Вывести данное число, записанное римскими цифрами - C++
Вводится число от 1 до 15. Вывести данное число, записанное римскими цифрами (I, II, III, IV, V, VI, …., XV);С++ плииииз!

Заданное число от 1 до 1999 вывести римскими цифрами - C++
помогите плиз переделать программку smile.gif необходимо осуществить ввод\вывод через cin\cout. и не использовать библ. string. просто...

Разработать программу, которая заданное целое число от 1 до 1999 выводит на экран римскими цифрами - C++
Разработать программу, которая заданное целое число от 1 до 1999 выводит на экран римскими цифрами.

Проверка текста на правильность записи числа от 1 до 1999 римскими цифрами - C++
Привет! Нужна ваша помощь. Поставлена следующая задача: Если заданный текст является правильной записью римскими цифрами целого числа от...

Дано натуральное трехзначное число n. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами. - C++
Дано натуральное трехзначное число n. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
...
1703 / 1196 / 496
Регистрация: 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 / 7
Регистрация: 24.12.2009
Сообщений: 392
09.01.2014, 14:47 #4
А нуля у римлян не было чтоль? И как сделать защиту от дурака? (как проверить, что юзер ввел число )
kilsza
2 / 2 / 0
Регистрация: 09.01.2014
Сообщений: 10
09.01.2014, 15:26  [ТС] #5
Премного благодарен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 15:26
Привет! Вот еще темы с ответами:

Как первый и второй массивы с цифрами объединить и записать в третий массив и отсортировать? - C++
В первом и во втором массиве находятся несколько цифр. Пожалуйста помогите, с чего мне начать и если сможете, выложите похожий готовый код....

Работа со звуком (как звуковые спектры определённого звукового файла записать цифрами в массив) - C++
как звуковые спектры определённого звукового файла записать цифрами в массив.

Найти минимальное число между 1 и 3 цифрами. - C++
Напишите пжл код для этой задачи: Найти минимальное число между 1 и 3 цифрами.

Число символов строке не являющихся ни буквами, ни цифрами - C++
На этой не деле, в срочном порядке нам дали несколько заданий в их числе: определить в строке число символов не являющихся ни буквами, ни...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.01.2014, 15:26
Ответ Создать тему
Опции темы

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