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

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

Восстановить пароль Регистрация
 
Qukish
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
25.12.2012, 11:29     Перевод с арабской на римскую сс и наоборот #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;
}
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 11:29     Перевод с арабской на римскую сс и наоборот
Посмотрите здесь:

Перевод ASCI в ASCII и наоборот C++
C++ Перевод числа из двоичной в десятичную и наоборот.
C++ Перевод римских чисел в арабские и наоборот
C++ Перевод с арабской на римскую сс и наоборот
C++ Перевод с арабской на римскую сисстему счисления
Написать программу, какая переводит числа с арабской системы в римскую C++
Программа перевод чисел из арабской систеиы счисления в римскую C++
C++ Перевод чисел из файла в римскую систему счисления

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
25.12.2012, 12:58     Перевод с арабской на римскую сс и наоборот #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
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;
}
Yandex
Объявления
25.12.2012, 12:58     Перевод с арабской на римскую сс и наоборот
Ответ Создать тему
Опции темы

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