Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для MariaMS
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 32

Convert Roman to Arabic

25.03.2013, 16:30. Показов 4231. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребян помогите, сделала из арабской в римскую системую , а наоборот не получается!

class
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
public class Roman
    {
        public static void ArabtoRoma(int n)
        {
            int[] arabic = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
            string[] roman = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
 
            int i = 0;
            string s = "";
            while (n > 0)
            {
                if (arabic[i] <= n) // i - элемент массива арабских цифр меньше либо равен числу n то
                {
                    n = n - arabic[i]; // от числа вычитаем его эквивалент в массиве арабском 
                    s = s + roman[i];
                }// в строку записываем его римское значение
                else i++;
 
            }
 
            Console.Write("Enter roman number:  ");
            Console.Write(s);
            Console.ReadLine();
        }
    }
main
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
static void Main(string[] args)
        {
            int i = 0;
            do
            {
                Console.Clear();
                Console.WriteLine(
                "1.From arabic to roman \n" +
                "2.Fron roman to arabic\n");
                Console.WriteLine("Please chose option");
 
                if (Int32.TryParse(Console.ReadLine(), out i))
                {
                    Console.WriteLine();
                }
                else
                    Console.WriteLine("");
                switch (i)
                {
                    case 1: Console.Clear();
                        Console.Write("Введите число в арабской десятичной системе = ");
                        int n = Convert.ToInt32(Console.ReadLine());
                        Roman.ArabtoRoma(n);
                        break;
                    case 2: Console.Clear();
                        Console.Write("Введите число в римской системе = ");
                        String str = Console.ReadLine();
                        //Roman.convertToRoman(rom);
                        break;
                    default: Console.Clear();
                        break;
                }
            }
            while (i != 3);
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2013, 16:30
Ответы с готовыми решениями:

Кто может мне сделать анимацию большого разрешения на тематику arabic trap ?
кто может мне сделать анимацию большого разрешения на тематику arabic trap за спасибку ? ну типо бесконечного видео,чтобы когда в цикле...

Widest Roman Prime
Widest Roman Prime Обсуждение на Hacker News Добавлено через 55 секунд &gt; (format nil &quot;~:@r&quot; 3989) ...

ROMAN's Developer Team - Нуждается в энтузиастах
Здесь не предлагают работу!!! Все фрилансеры, и &quot;HTML-Кодеры&quot; лесом! Эту тему я создал с целью поиска людей, людей которые хотят...

8
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
25.03.2013, 18:26
C#
1
2
[quote=MariaMS;4307083]int[] arabic = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
* * * * * * string[] roman = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };[/quote]
Вообще желательно вынести оба массива за метод.

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
public static void convertToRoman(string data)
        {
            int value = 0;
 
            while (data.Length > 0)
            {
                bool flug = false;
                foreach (var symb in roman)
                {
                    if (symb.Length > data.Length) continue;
                    string sub = data.Substring(0, symb.Length);
                    if (sub == symb)
                    {
                        try
                        {
                            value += arabic[Array.IndexOf(roman, symb)];
                            if (data.Length - symb.Length < 1) goto end;
                            data = data.Substring(symb.Length);
                            flug = true;
                        }
                        catch
                        {
                            //===
                        }
                    }
                }
                if (!flug) break;
            }
            
            end:
            Console.Write("Enter arabic number:  ");
            Console.Write(value);
            Console.ReadLine();
        }
0
 Аватар для MariaMS
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 32
26.03.2013, 00:23  [ТС]
если прописывать буквы не в методе, то почему-то ошибку выдает : An object reference is required for the non-static field, method, or property 'ArabToRoman.Roman.roma'
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
26.03.2013, 10:26
Цитата Сообщение от MariaMS Посмотреть сообщение
если прописывать буквы не в методе, то почему-то ошибку выдает : An object reference is required for the non-static field, method, or property 'ArabToRoman.Roman.roma'
Где именно?
0
 Аватар для MariaMS
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 32
26.03.2013, 14:26  [ТС]
подчеркивает roman и ошибка та, что выше написала

C#
1
foreach (var symb in roman)
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
26.03.2013, 15:32
Цитата Сообщение от MariaMS Посмотреть сообщение
подчеркивает roman и ошибка та, что выше написала

C#
1
foreach (var symb in roman)
Говорю же оба массива нужно вынести за методы и сделать статическими
0
 Аватар для MariaMS
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 32
27.03.2013, 20:51  [ТС]
черт, что-то у меня не получается((( извини!
Только начали C# проходить, еще пока не все на отлично.. поможешь с тем, что ты сказал надо сделать?!
0
 Аватар для CSharpCraft
58 / 58 / 9
Регистрация: 09.01.2013
Сообщений: 247
28.03.2013, 20:24
Цитата Сообщение от MariaMS Посмотреть сообщение
черт, что-то у меня не получается((( извини!
Только начали C# проходить, еще пока не все на отлично.. поможешь с тем, что ты сказал надо сделать?!
Полный код класса Roman
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
public class Roman
    {
        static readonly int[] arabic = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
        static readonly string[] roman = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
 
        public static void ArabtoRoma(int n)
        {
            int i = 0;
            string s = "";
            while (n > 0)
            {
                if (arabic[i] <= n) // i - элемент массива арабских цифр меньше либо равен числу n то
                {
                    n = n - arabic[i]; // от числа вычитаем его эквивалент в массиве арабском 
                    s = s + roman[i];
                }// в строку записываем его римское значение
                else i++;
 
            }
 
            Console.Write("Enter roman number:  ");
            Console.Write(s);
            Console.ReadLine();
        }
 
        public static void convertToRoman(string data)
        {
            int value = 0;
 
            while (data.Length > 0)
            {
                bool flug = false;
                foreach (var symb in roman)
                {
                    if (symb.Length > data.Length) continue;
                    string sub = data.Substring(0, symb.Length);
                    if (sub == symb)
                    {
                        try
                        {
                            value += arabic[Array.IndexOf(roman, symb)];
                            if (data.Length - symb.Length < 1) goto end;
                            data = data.Substring(symb.Length);
                            flug = true;
                        }
                        catch
                        {
                            //===
                        }
                    }
                }
                if (!flug) break;
            }
            
            end:
            Console.Write("Enter arabic number:  ");
            Console.Write(value);
            Console.ReadLine();
        }
    }
И полный код основной программы:

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
        static void Main(string[] args)
        {
            int i = 0;
            do
            {
                Console.Clear();
                Console.WriteLine(
                "1.From arabic to roman \n" +
                "2.Fron roman to arabic\n");
                Console.WriteLine("Please chose option");
 
                if (Int32.TryParse(Console.ReadLine(), out i))
                {
                    Console.WriteLine();
                }
                else
                    Console.WriteLine("");
                switch (i)
                {
                    case 1: Console.Clear();
                        Console.Write("Введите число в арабской десятичной системе = ");
                        int n = Convert.ToInt32(Console.ReadLine());
                        Roman.ArabtoRoma(n);
                        break;
                    case 2: Console.Clear();
                        Console.Write("Введите число в римской системе = ");
                        String str = Console.ReadLine();
                        Roman.convertToRoman(str);
                        break;
                    default: Console.Clear();
                        break;
                }
            }
            while (i != 3);
        }
1
 Аватар для MariaMS
0 / 0 / 0
Регистрация: 26.05.2012
Сообщений: 32
29.03.2013, 22:26  [ТС]
Тооочно, совсем забыла про readonly , спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2013, 22:26
Помогаю со студенческими работами здесь

Неправильно отображается шрифт Times New Roman.
После переустановки MS Office 2007 вместа шрифта Times New Roman отображается шрифт Times New Roman Italic. Это не только в ворде, но...

Заменить в текстовом файле Roman.txt все ' . ' символом ' ! '
Заменить в текстовом файле Roman.txt все ' . ' символом ' ! '? Как сделать помогите!!))

Определить, что в тексте есть буквы шрифта не “Times New Roman”
Ребят, кто-нибудь, пожалуйста, помогите с макросом для Excel ! Вообще не понимаю, как это сделать, а скоро нужно сдавать Вот инструкция к...

Нет установленного шрифта Times New Roman в списке шрифтов Libre Office
Устанавливал пакет виндовых шрифтов в систему - шрифты не появились, хотя система отрапортовала об удачной установке пакета, установил...

Ошибки: Cannot implicitly convert type 'string' to 'int' и Argument 1: cannot convert from 'int' to 'string'
youtube.com_Пишем парсер на Csharp. Ошибка Пытаюсь написать парсер. Вроде сделал всё как в уроке. Выдаёт ошибки: - в строке...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru