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

Декодер Автоматический преобразователь римские цифры в арабские

08.11.2022, 01:04. Показов 267. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача состоит в том чтобы распознать римские цифры и перевести их в арабские
нашел такую программу и не понимаю
1.зачем нужна строчка 7 "(a += "000"; )"
2. почему при изменении (case 48) на (case 1) , (case 73) на (case 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
#include <iostream> 
#include <string> 
using namespace std;
 
int func(string a) {
    int j = a.length();
    a += "000";
    int n = 0;
    int x = 0, y = 0, z = 0, t = 0,
        kv = 0, kl = 0, kd = 0,
        k2 = 0,
        k3 = 1001;
    for (int i = 0; i < j; i++) {
        switch (a[i]) {
        case 1: y = 0; break;
        case 2: x = 1; break;
        case 3: x = 5; kv = kv + 1;  break;
        case 4: x = 10; break;
        case 5: x = 50; kl = kl + 1; break;
        case 6: x = 100; break;
        case 7: x = 500; kd = kd + 1; break;
        case 8: x = 1000; break;
        }
        switch (a[i + 1]) {
        case 1: y = 0; break;
        case 2: y = 1; break;
        case 3: y = 5; break;
        case 4: y = 10; break;
        case 5: y = 50; break;
        case 6: y = 100; break;
        case 7: y = 500; break;
        case 8: y = 1000; break;
        }
        switch (a[i + 2]) {
        case 1: z = 0; break;
        case 2: z = 1; break;
        case 3: z = 5; break;
        case 4: z = 10; break;
        case 5: z = 50; break;
        case 6: z = 100; break;
        case 7: z = 500; break;
        case 8: z = 1000; break;
        }
        switch (a[i + 3]) {
        case 1: t = 0; break;
        case 2: t = 1; break;
        case 3: t = 5; break;
        case 4: t = 10; break;
        case 5: t = 50; break;
        case 6: t = 100; break;
        case 7: t = 500; break;
        case 8: t = 1000; break;
        }
        if (x < y) {
            n = n - x;
            k3 = x;
        }
        else if (y < k3) {
            n = n + x;
        }
        else { k2 = k2 + 1; }
        if (y - x == x) { k2 = k2 + 1; }
        if ((x < z && y < z)
            or (kl > 1) or (kd > 1) or (kv > 1)
            or ((x == y) && (y == z) && (z == t) && (t == x))
            or (k2 > 0)) {
            cout << "/" << endl;
            return (0);
        }
    }
    return (n);
}
 
int main() {
    string b;
    cin >> b;
    cout << func(b);
    return 0;
}


ОСНОВНАЯ РАБОЧАЯ ПРОГРАММА
Кликните здесь для просмотра всего текста
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
#include <iostream> 
#include <string> 
using namespace std;
 
int func(string a) {
    int j = a.length();
    a += "000";
    int n = 0;
    int x = 0, y = 0, z = 0, t = 0,
        kv = 0, kl = 0, kd = 0,
        k2 = 0,
        k3 = 1001;
    for (int i = 0; i < j; i++) {
        switch (a[i]) {
        case 48: y = 0; break;
        case 73: x = 1; break;
        case 86: x = 5; kv = kv + 1;  break;
        case 88: x = 10; break;
        case 76: x = 50; kl = kl + 1; break;
        case 67: x = 100; break;
        case 68: x = 500; kd = kd + 1; break;
        case 77: x = 1000; break;
        }
        switch (a[i + 1]) {
        case 48: y = 0; break;
        case 73: y = 1; break;
        case 86: y = 5; break;
        case 88: y = 10; break;
        case 76: y = 50; break;
        case 67: y = 100; break;
        case 68: y = 500; break;
        case 77: y = 1000; break;
        }
        switch (a[i + 2]) {
        case 48: z = 0; break;
        case 73: z = 1; break;
        case 86: z = 5; break;
        case 88: z = 10; break;
        case 76: z = 50; break;
        case 67: z = 100; break;
        case 68: z = 500; break;
        case 77: z = 1000; break;
        }
        switch (a[i + 3]) {
        case 48: t = 0; break;
        case 73: t = 1; break;
        case 86: t = 5; break;
        case 88: t = 10; break;
        case 76: t = 50; break;
        case 67: t = 100; break;
        case 68: t = 500; break;
        case 77: t = 1000; break;
        }
        if (x < y) {
            n = n - x;
            k3 = x;
        }
        else if (y < k3) {
            n = n + x;
        }
        else { k2 = k2 + 1; }
        if (y - x == x) { k2 = k2 + 1; }
        if ((x < z && y < z)
            or (kl > 1) or (kd > 1) or (kv > 1)
            or ((x == y) && (y == z) && (z == t) && (t == x))
            or (k2 > 0)) {
            cout << "/" << endl;
            return (0);
        }
    }
    return (n);
}
 
int main() {
    string b;
    cin >> b;
    cout << func(b);
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2022, 01:04
Ответы с готовыми решениями:

Арабские цифры в римские
Перевод арабских цифр в римские. Саму задачу я решил, так что код как таковой мне не нужен, просто нашел потом решение очень короткое и...

Года, арабские цифры в римские
Подскажите пожалуиста хотя бы по какому принцыпу мне продолжить написание кода. Т.е. не могу понять алгоритим дальнеиших действий ...

Перевод римские цифры в арабские и обратно
Помогите решить задачу на C++ перевод римские цифры в арабские и обратно. PLEASE.

1
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,008
08.11.2022, 01:23
2. Потому что таким образом меняются коды символов.

Замена римских букв на арабские цифры в строке
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.11.2022, 01:23
Помогаю со студенческими работами здесь

Нужно перевести римские цифры в арабские
Дан текст из заглавных латинских букв, за которым следует пробел. Определить, является ли этот текст правильной записью римскими цифрами...

арабские цифры в римские
Написать программу, которая переводит арабские цифры в римские. Добавлено через 1 час 45 минут Как римские в арабские перевести я...

Арабские цифры в римские
Возможно кто-то сталкивался и может поделиться? 1-&gt; I 2-&gt; II 3-&gt;III 4-&gt;IV ну, и так далее. Все это безобразие должно...

Римские цифры в арабские
Нужен конвертер римских цифр в арабские. Алгоритм конвертации понятен, а вот как мне грамотно оформить функцию?

Римские цифры в арабские
Как мне переконвертировать римские цифры в арабские? Добавлено через 1 минуту Додумался.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru