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

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

Восстановить пароль Регистрация
 
 
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
09.03.2014, 10:11     Написать программу, какая переводит числа с арабской системы в римскую #1
Задание:
Написать программу, какая переводит числа с арабской системы в римскую.
Сам текст программы уже дали в задании, это как вводное задание с ответом, что бы потом спросить что там написано)
Как работает сам алгоритм я не понимаю, в этом и проблема.
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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2014, 10:11     Написать программу, какая переводит числа с арабской системы в римскую
Посмотрите здесь:

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

Добавлено через 6 минут
Может кто пояснить полный алгоритм программы?
egorus99
 Аватар для egorus99
1 / 1 / 1
Регистрация: 28.05.2013
Сообщений: 28
09.03.2014, 14:09     Написать программу, какая переводит числа с арабской системы в римскую #7
Тот код, что дан, неправильно вообще работает.
Например, если ввести 9, то выводит VIIII, а правильно - IX.
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
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.
}
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
09.03.2014, 16:00     Написать программу, какая переводит числа с арабской системы в римскую #9
andreyananas , добавляешь цикл по символам и, если символ не > 0 и не < 9, то ошибка

Добавлено через 4 минуты
andreyananas, разобрался я с твоим кодом наконец-то.
Смысл таков: вводим число, допустим, 9, она начинает проверять с самого большого возможного числа и порядке убывания и в цикле процедуры roman, выводит соответствующий символ, при это вычитая значение для данного символа, например, если V, то 5 и т.д.
сформулировал не оч., может, если не поймёте сразу, расскажу поподробнее
Не прочитал, что разобрались)
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
09.03.2014, 17:06  [ТС]     Написать программу, какая переводит числа с арабской системы в римскую #10
Цитата Сообщение от Worf Посмотреть сообщение
добавляешь цикл по символам и, если символ не > 0 и не < 9, то ошибка
Ща подумаю как это)))
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
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
}
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
09.03.2014, 17:08  [ТС]     Написать программу, какая переводит числа с арабской системы в римскую #12
Еще объясните как сделать выход с программы, через какую команду? А то я как не пытаюсь, все равно надо 2 раза на Ентер нажать(((
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
09.03.2014, 17:11     Написать программу, какая переводит числа с арабской системы в римскую #13
Командой
C++
1
Exit(0);
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
09.03.2014, 17:14  [ТС]     Написать программу, какая переводит числа с арабской системы в римскую #14
Цитата Сообщение от Worf Посмотреть сообщение
Командой
Код C++
1
Exit(0);
Вот не хочет она работать(((
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
09.03.2014, 17:16     Написать программу, какая переводит числа с арабской системы в римскую #15
Подключите библиотеку window.h
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
09.03.2014, 17:22  [ТС]     Написать программу, какая переводит числа с арабской системы в римскую #16
Вот обновил текст программы, куда вставить твой цикл ? И что такое Count?
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <cstdlib>
 
int roman(int,int,char);// декларация функции.
 
int main()
{
    int a;
    char con;
    do
    {
     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");
        /* %d - специф. формата - решает как вводить и выводить аргумент. */
        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);
     printf(" ROMAN NUMBER =>");
     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');
     fflush(stdin);
     printf("\n to continue the program, enter => 'y'\n");
     printf(" to exit the program, enter any key...\n");
     scanf("%c", &con);
     if (con!='y')exit(0);
    }
    while (con=='y');
 
    return 0;
}
int roman(int i, int j, char c) // описание функции roman (выводит результат).
{
    while (i>=j)
    {
        putchar(c);// выводит символ на экран.
        i=i-j;
    }
    return(i);// возврат значения i.
}
Добавлено через 2 минуты
Цитата Сообщение от Worf Посмотреть сообщение
Подключите библиотеку window.h
Все равно не хочет((
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
09.03.2014, 17:22     Написать программу, какая переводит числа с арабской системы в римскую #17
Count - длинна строки или, как правило, последний элемент.
А на счёт цикла, так сами решайте, куда вам его вставлять, если вам нужно, что бы при ошибке ничего дальше не происходило, то до выполнения основной части алгоритма
Цитата Сообщение от andreyananas Посмотреть сообщение
Все равно не хочет((
exit(0);
C++
1
#include <cstdlib>
noname_club
 Аватар для noname_club
100 / 88 / 9
Регистрация: 01.05.2013
Сообщений: 563
09.03.2014, 17:24     Написать программу, какая переводит числа с арабской системы в римскую #18
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function IntToRoman(num: Cardinal): string;
const
    Nvals = 13;
    vals: array[1..Nvals] of word = (1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);
    roms: array[1..Nvals] of string[2] = ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
var
    b: 1..Nvals;
begin
    result := '';
    b := Nvals;
while num > 0 do begin
while vals[b] > num do
    dec(b);
    dec(num, vals[b]);
    result := result + roms[b]
end;
end;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string IntToRoman(int num) {
    const int * vals = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
    const char ** roms = { 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L',    'XC', 'C', 'CD', 'D', 'CM', 'M' };
    
    string result = '';
    
    int b = 12;
    while (num > 0) {
        while (vals[b] > num) {
            b--;
            num -= vals[b];
            result += roms[b];
        }
    }
    return result;
}
andreyananas
 Аватар для andreyananas
17 / 17 / 5
Регистрация: 15.10.2013
Сообщений: 806
09.03.2014, 17:29  [ТС]     Написать программу, какая переводит числа с арабской системы в римскую #19
Цитата Сообщение от Worf Посмотреть сообщение
exit(0);
Код C++
1
#include <cstdlib>
неа))))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2014, 17:33     Написать программу, какая переводит числа с арабской системы в римскую
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Worf
42 / 42 / 6
Регистрация: 06.02.2014
Сообщений: 227
09.03.2014, 17:33     Написать программу, какая переводит числа с арабской системы в римскую #20
Тогда попробуйте библиотеку window.hpp или windows.h/hpp, я не помню точно)
Yandex
Объявления
09.03.2014, 17:33     Написать программу, какая переводит числа с арабской системы в римскую
Ответ Создать тему
Опции темы

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