Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10

Перевод с арабской на римскую сс и наоборот

25.12.2012, 11:29. Показов 1520. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа работает на половину, переводит только с римских чисел на арабские, помогите доделать что бы переводила и с арабских на римские

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
char* romanValues[] = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};
int arabic[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
 
int main () {
 
         
         char s[256] = "";
         int x, n, c, c1, i, a, k;
       
         cout<<"Vvedite chislo: ";
         cin>>s;
         
  
        for (i = 0; i < k; i++)   
        { if ((s[i] != 'I') &&  (s[i] != 'V') && (s[i] != 'X') && //ïðîâåðêà
        (s[i] != 'L') && (s[i] != 'C') && 
        (s[i] != 'D') && (s[i] != 'M')) {
              
        int i = 12; // ïîñëåäíèé ýëåìåíò ìàññèâà íà÷èíàÿ ñ 0-ãî
 
  while(x != 0) {
    while(x >= arabic[i]) {
      x -= arabic[i];
      sprintf(s, "%s%s", s, romanValues[i]);
    }
    i--;
  }
  cout<<s;
  //printf("\n%s\n", s);
}
else
                     // k=strlen(s);
 
 for (i = 0, c = 0, n = 0; i < k; i++)
        {
                c1 = c;
               
                
               if (s[i] == 'I')
                        c = 1;
                        
                if (s[i] == 'V')
                        c = 5;
 
                if (s[i] == 'X')
                        c = 10;
 
                if (s[i] == 'L')
                        c = 50;
 
                if (s[i] == 'C')
                        c = 100;
 
                if (s[i] == 'D')
                        c = 500;
 
                if (s[i] == 'M')
                        c = 1000;
 
                if (c > c1)
                        a = -2 * c1;
                else
                    a = 0; 
 
                n = n + a + c;
        }
        
        cout<<"Vashe chislo: "<<n;
        //printf("Vashe chislo: %d", n);
        getch();
        return 0;
}
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.12.2012, 11:29
Ответы с готовыми решениями:

Перевод с арабской на римскую сс и наоборот
не могу составить программу перевода с арабской на римскую сс. Помогите плиз.

Перевод из арабской сис. в римскую!
Да, я видел уже существующие темы на этот вопрос. Но нигде нету перевода чисел 10 000+ везде до 1000. Так вот проблема в том что 10 000 =...

Перевод с арабской на римскую сисстему счисления
Подскажите как сделать перевод с арабских на римские числа по принципу этой программы #include &lt;string.h&gt; #include...

1
Обитатель форума
201 / 184 / 54
Регистрация: 28.10.2012
Сообщений: 543
25.12.2012, 12:58
я реализовал вот таким вот простеньким методом.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
ostringstream translate(int _m)
{
    ostringstream os;
    bool m_b90 = false;
 
    if (_m > 1000)
    {
        for (int i=0; i < (_m - 1000); i+1000)
        {
            os << "M";
            _m -= 1000;
        }
    }
 
    if (_m > 900 && _m < 1000)
    {
        os << "CM";
        _m -= 900;
    }
 
    if (_m > 500 && _m < 900)
    {
        os << "D";
        _m -= 500;
    }
 
    if (_m > 400 && _m < 500)
    {
        os << "CD";
        _m -= 400;
    }
 
    if (_m > 100 && _m < 400)
    {
        for (int i=0; i < (_m - 100); i+100)
        {
            os << "C";
            _m -= 100;
        }
    }
 
    if (_m > 90 && _m < 100)
    {
        m_b90 = true;
        _m -= 90;
    }
 
    if (_m > 50 && _m < 90)
    {
        os << "L";
        _m -= 50;
    }
 
    if (_m > 10 &&_m < 40)
    {
        for (int i=0; i < (_m - 10); i+10)
        {
            os << "X";
            _m -= 10;
        }
    }
 
    if (_m > 40 && _m < 50)
    {
        os << "XL";
        _m -= 40;
    }
 
    if (_m < 0)
        _m += 10;
 
    switch(_m)
    {
        case 1:     os << "I";      break;
        case 2:     os << "II";     break;
        case 3:     os << "III";    break;
        case 4:     os << "IV";     break;
        case 5:     os << "V";      break;
        case 6:     os << "VI";     break;
        case 7:     os << "VII";    break;
        case 8:     os << "VIII";   break;
        case 9:     os << "IX";     break;
        case 10:    os << "X";      break;
        case 40:    os << "XL";     break;
        case 50:    os << "L";      break;
        case 90:    os << "XC";     break;
        case 100:   os << "C";      break;
        case 500:   os << "D";      break;
        case 1000:  os << "M";      break;
 
        default: os << "Value not found"; break;
    }
 
    if (m_b90)
        os << "C";
 
    return os;
}
 
int main()
{
    int _m;
    cin >> _m;
 
    cout << translate(_m).str() << endl;
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.12.2012, 12:58
Помогаю со студенческими работами здесь

Программа перевод чисел из арабской систеиы счисления в римскую
Перевести заданное целое число в систему римского счисления (1 - I, 5 - V, 10 - X, 50 - L, 100 - C, 500 - D, 1000 - M)

Перевод из арабской в римскую!
Помогите пожалуйста! Написала программу из римской в арабскую, а наоборот что-то не получается. Нуждаюсь в помощи! using System; ...

Перевод из арабской системы в римскую
Здравствуйте!!!Задача:нужно написать программу перевода из арабской системы счисления в римскую систему!!!заранее спасибо за помощь!!!...

Перевод чисел из арабской в римскую систему
Надо перевести число от 1 до 2000 из арабской системы счисления в римскую, без использования строк, но с использованием массива.

Перевод из арабской системы счисления в римскую
Заготовка программы: (defun ArabRim () (setf R (vector &quot;I&quot; &quot;V&quot; &quot;X&quot; &quot;L&quot; &quot;C&quot; &quot;D&quot; &quot;M&quot;)) (format t &quot;Vvedite Arab = &quot;) (setf Arab...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru