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

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

Войти
Регистрация
Восстановить пароль
 
 
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
#1

Написать программу, какая переводит числа с арабской системы в римскую - C++

09.03.2014, 10:11. Просмотров 937. Ответов 21
Метки нет (Все метки)

Задание:
Написать программу, какая переводит числа с арабской системы в римскую.
Сам текст программы уже дали в задании, это как вводное задание с ответом, что бы потом спросить что там написано)
Как работает сам алгоритм я не понимаю, в этом и проблема.
5 ряд и 22-29 ряды. Не могу разобраться как работает(

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
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
int roman(int,int,char);
 
int main()
{
    int a;
    printf("ENTER NUMBER\n");
    scanf("%d",&a);
    a=roman(a,1000,'M');
    a=roman(a,500,'D');
    a=roman(a,100,'D');
    a=roman(a,50,'L');
    a=roman(a,10,'X');
    a=roman(a,5,'V');
    a=roman(a,1,'I');
    getch();
    return 0;
}
int roman(int i, int j, char c)
{
    while (i>=j)
    {
        putchar(c);
        i=i-j;
    }
    return(i);
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2014, 10:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу, какая переводит числа с арабской системы в римскую (C++):

Написать программу, которая переводит числа с шестнадцатеричной системы в десятичную - C++
С использованием функции hex, а также без неё.

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

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

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

Написать программу, которая переводит число из 4-й системы счисления в 14-ю через 10-ю - C++
Написать программу, которая переводит число из 4-й системы счисления в 14-ю через 10-ю. Сделайте, плиз. Ваши буквы приболели...

Написать программу, которая переводит число из 13-й системы счисления в 3-ю через 10-ю - C++
Написать программу, которая переводит число из 13-й системы счисления в 3-ю через 10-ю!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
garkeP91
50 / 50 / 5
Регистрация: 24.10.2010
Сообщений: 131
09.03.2014, 10:42 #2
5 строка: Декларация (объявление) функции с тремя аргументами.
22-29 строки: Тело (описание) этой самой функции.
while - цикл.
Функция putchar() записывает символ, содержащийся в младшем байте параметра c, в стандартный поток вывода stdout.
Функция roman возвращает измененное значение i.
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 10:43 #3
Что вообще должна сделать программа, которую вы написали?
строка №11 - вы передаёте переменной типа int значение типа double "%d"
Зачем вам создавать прототип функции roman и потом ниже её описывать, если можно было просто описать её выше процедуры main?
Как вы вызываете процедуру roman в процедуре main, и присваиваете значению переменной функцию, передавая в неё эту же переменную?
0
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
09.03.2014, 11:25  [ТС] #4
Программа должна переводить числа с арабской системы в римскую. Текст программы есть, но нету понятия как она работает(
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 11:28 #5
Я вообще не понимаю смысла её работы, если в итоге не получается никакого результата,то есть ничего не выводится и зачем тогда такая программа? Или опишите подробнее с примерами, что на вход, что на выход, если вы знаете задание, или добавьте вывод, что бы было понятно, что получится и куда выведется?
0
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
09.03.2014, 13:00  [ТС] #6
Она работает. Putchar(c) выводит символы как я понимаю...

Добавлено через 6 минут
Может кто пояснить полный алгоритм программы?
0
egorus99
1 / 1 / 1
Регистрация: 28.05.2013
Сообщений: 28
09.03.2014, 14:09 #7
Тот код, что дан, неправильно вообще работает.
Например, если ввести 9, то выводит VIIII, а правильно - IX.
0
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
09.03.2014, 15:54  [ТС] #8
Цитата Сообщение от egorus99 Посмотреть сообщение
Тот код, что дан, неправильно вообще работает.
Например, если ввести 9, то выводит VIIII, а правильно - IX.
Так и надо, не в этом суть))

Добавлено через 4 минуты
Вот модернизировал прогу, с алгоритмом работы разобрался.
Интересует:
15й ряд, Как сделать, что при вводе символов тоже выбивало ошибку?
Сейчас при вводе например "cs78" оно переводит 78 в рискую систему и все. А нужно что бы выбил ошибку ввода.


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
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
 
int roman(int,int,char);// декларация функции.
 
int main()
{
    int a;
    do
      {
        system("cls");
        printf("| 1000 - M | 500 - D | 100 - C | 50 - L | 10 - X | 5 - M | 1 - I |\n");
        printf(" ENTER NATURAL NUMBER (arabic)\n");
        if (!(scanf("%d",&a)) || (a<=0))// проверка правильности ввода.
            {
               printf(" ERROR ENTER\a\n");
               printf(" to continue, press any key...\n");
               getch();
               a=0;
               fflush(stdin);// очистка буфера ввода.
            }
       }
    while (a==0);
    a=roman(a,1000,'M');// подключает функцию roman.
    a=roman(a,500,'D');
    a=roman(a,100,'D');
    a=roman(a,50,'L');
    a=roman(a,10,'X');
    a=roman(a,5,'V');
    a=roman(a,1,'I');
    getch();
    return 0;
}
int roman(int i, int j, char c) // описание функции roman (выводит результат).
{
    while (i>=j)
    {
        putchar(c);// выводит символ на экран.
        i=i-j;
    }
    return(i);// возврат значения i.
}
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 16:00 #9
andreyananas , добавляешь цикл по символам и, если символ не > 0 и не < 9, то ошибка

Добавлено через 4 минуты
andreyananas, разобрался я с твоим кодом наконец-то.
Смысл таков: вводим число, допустим, 9, она начинает проверять с самого большого возможного числа и порядке убывания и в цикле процедуры roman, выводит соответствующий символ, при это вычитая значение для данного символа, например, если V, то 5 и т.д.
сформулировал не оч., может, если не поймёте сразу, расскажу поподробнее
Не прочитал, что разобрались)
0
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
09.03.2014, 17:06  [ТС] #10
Цитата Сообщение от Worf Посмотреть сообщение
добавляешь цикл по символам и, если символ не > 0 и не < 9, то ошибка
Ща подумаю как это)))
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 17:07 #11
что думать?)
C++
1
2
3
4
5
6
char Text;
for(i = 0; i < Count; i++)
{
if(!(Text[i] >= '0'  && Text[i] <=9))
Error
}
0
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
09.03.2014, 17:08  [ТС] #12
Еще объясните как сделать выход с программы, через какую команду? А то я как не пытаюсь, все равно надо 2 раза на Ентер нажать(((
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 17:11 #13
Командой
C++
1
Exit(0);
0
andreyananas
22 / 22 / 9
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
09.03.2014, 17:14  [ТС] #14
Цитата Сообщение от Worf Посмотреть сообщение
Командой
Код C++
1
Exit(0);
Вот не хочет она работать(((
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 17:16 #15
Подключите библиотеку window.h
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2014, 17:16
Привет! Вот еще темы с ответами:

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

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

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

Написать программу, которая переводит числа по основанию 8 в 4. Выполнить операцию деления - C++
Написать программу, которая переводит числа по основанию 8 в 4. Выполнить операцию деления.


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

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

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