Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/23: Рейтинг темы: голосов - 23, средняя оценка - 4.83
-17 / 0 / 1
Регистрация: 17.04.2013
Сообщений: 60

Перевести числа, написанные словами, в числа, написанные цифрами

09.06.2013, 21:20. Показов 4753. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем это код перевода чисел, написанных цифрами, в числа, написанные словами. у меня задание: переводить числа, написанные словами, в числа, написанные цифрами. то есть диаметрально противоположное задание... Помогите!!!

///

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
using System;
using System.Collections.Generic;
using System.Text;
namespace StringExample
{
class Program
{
static void Main(string[] args)
{
//Решение задачи преследует сугубо академические цели. Решение является не оптимальным.
Console.WriteLine("Введите число, например 568.15 :");
string strNumber = Console.ReadLine(); //Ввели число, оно может быть как с точкой, так и с запятой
strNumber = strNumber.Trim(); //Метод trim() удаляет все пробелы сначала и с конца строки
//Уничтожим в строке все буквы, оставив только цифры
strNumber = strNumber.Replace(",","."); //Метод replace() заменяет все запятые в строке на точки
strNumber += "."; //Сгенерируем 0-ую дробную часть на случай, если ее не будет
//Разобьем полученную строку на части, разделенные точкой
string[] strParts = strNumber.Split('.'); //Массив типа string будет содержать в себе части исходной строки
//Будем считать, что пользователь мог ошибочно ввести некорректную строку, например: "12, 23, 101".
//В качестве целой части будет считать элемент strParts[0], а в качестве дробной - элемент strParts[1],
//остальные элементы массива будем считать ошибочными
//В элементах strParts[0] и strParts[1] могут содержаться не только буквы. Удалим ненужные символы.
//Создаим массивы из символов
char[] strPart0Array = strParts[0].ToCharArray();
char[] strPart1Array = strParts[1].ToCharArray();
//Заменим все элементы-"нецифры" в массивах на пробелы
for (int i = 0; i < strPart0Array.Length; i++) if (char.IsDigit(strPart0Array[i]) == false) strPart0Array[i] = ' ';
for (int i = 0; i < strPart1Array.Length; i++) if (char.IsDigit(strPart1Array[i]) == false) strPart1Array[i] = ' ';
//Сохраним "почищенные" массивы
strParts[0] = new string(strPart0Array);
strParts[1] = new string(strPart1Array);
//Уничтожим все пробелы в полученых строках
strParts[0] = strParts[0].Replace(" ", "");
strParts[1] = strParts[1].Replace(" ", "");
//Уберем незначащие нули
strParts[0] = strParts[0].TrimStart('0');
strParts[1] = strParts[1].TrimEnd('0');
//Если дробная или целые части пустые, то добавляем нолики
if (strParts[0] == "") strParts[0] = "0";
if (strParts[1] == "") strParts[1] = "0";
Console.WriteLine("Обработанное исходное число: {0}.{1}", strParts[0], strParts[1]);
if (Convert.ToInt16(strParts[0]) < 1000)
{
string strResNumber = "";//Результирующая строка
if(strParts[0].Length == 3)
{
switch(strParts[0].Substring(0, 1))
{
case "1": strResNumber += "сто "; break;
case "2": strResNumber += "двести "; break;
case "3": strResNumber += "триста "; break;
case "4": strResNumber += "четыреста "; break;
case "5": strResNumber += "пятьсот "; break;
case "6": strResNumber += "шестьсот "; break;
case "7": strResNumber += "семьсот "; break;
case "8": strResNumber += "восемьсот "; break;
case "9": strResNumber += "девятьсот "; break;
default: strResNumber += ""; break;
}
strParts[0] = strParts[0].Substring(1, 2);
}
if (strParts[0].Length == 2 && strParts[0].Substring(0, 1) == "1")
{
switch (strParts[0].Substring(0, 2))
{
case "10": strResNumber += "десять "; break;
case "11": strResNumber += "одиннадцать "; break;
case "12": strResNumber += "двенадцать "; break;
case "13": strResNumber += "тринадцать "; break;
case "14": strResNumber += "четырнадцать "; break;
case "15": strResNumber += "пятнадцать "; break;
case "16": strResNumber += "шестнадцать "; break;
case "17": strResNumber += "семнадцать "; break;
case "18": strResNumber += "восемнадцать "; break;
case "19": strResNumber += "девятнадцать "; break;
default: strResNumber += ""; break;
}
strParts[0] = "";
}
if (strParts[0].Length == 2)
{
switch (strParts[0].Substring(0, 1))
{
case "2": strResNumber += "двадцать "; break;
case "3": strResNumber += "тридцать "; break;
case "4": strResNumber += "сорок "; break;
case "5": strResNumber += "пятьдесят "; break;
case "6": strResNumber += "шестьдесят "; break;
case "7": strResNumber += "семьдесят "; break;
case "8": strResNumber += "восемьдесят "; break;
case "9": strResNumber += "девяносто "; break;
default: strResNumber += ""; break;
}
strParts[0] = strParts[0].Substring(1, 1);
}
if (strParts[0].Length == 1)
{
switch (strParts[0])
{
case "0": strResNumber += "ноль "; break;
case "1": strResNumber += "один "; break;
case "2": strResNumber += "два "; break;
case "3": strResNumber += "три "; break;
case "4": strResNumber += "четыре "; break;
case "5": strResNumber += "пять "; break;
case "6": strResNumber += "шесть "; break;
case "7": strResNumber += "семь "; break;
case "8": strResNumber += "восемь "; break;
case "9": strResNumber += "девять "; break;
default: strResNumber += ""; break;
}
strParts[0] = "";
}
strResNumber += "целых, ";
//Обработаем дробную часть
//Сократим дробную часть до 3-х значащих символов
if(strParts[1].Length > 3)
strParts[1] = strParts[1].Substring(0, 3);
int fracCount = strParts[1].Length;
if (strParts[1].Length == 3)
{
switch (strParts[1].Substring(0, 1))
{
case "1": strResNumber += "сто "; break;
case "2": strResNumber += "двести "; break;
case "3": strResNumber += "триста "; break;
case "4": strResNumber += "четыреста "; break;
case "5": strResNumber += "пятьсот "; break;
case "6": strResNumber += "шестьсот "; break;
case "7": strResNumber += "семьсот "; break;
case "8": strResNumber += "восемьсот "; break;
case "9": strResNumber += "девятьсот "; break;
default: strResNumber += ""; break;
}
strParts[1] = strParts[1].Substring(1, 2);
}
if (strParts[1].Length == 2 && strParts[1].Substring(0, 1) == "1")
{
switch (strParts[1].Substring(0, 2))
{
case "10": strResNumber += "десять "; break;
case "11": strResNumber += "одиннадцать "; break;
case "12": strResNumber += "двенадцать "; break;
case "13": strResNumber += "тринадцать "; break;
case "14": strResNumber += "четырнадцать "; break;
case "15": strResNumber += "пятнадцать "; break;
case "16": strResNumber += "шестнадцать "; break;
case "17": strResNumber += "семнадцать "; break;
case "18": strResNumber += "восемнадцать "; break;
case "19": strResNumber += "девятнадцать "; break;
default: strResNumber += ""; break;
}
strParts[1] = "";
}
if (strParts[1].Length == 2)
{
switch (strParts[1].Substring(0, 1))
{
case "2": strResNumber += "двадцать "; break;
case "3": strResNumber += "тридцать "; break;
case "4": strResNumber += "сорок "; break;
case "5": strResNumber += "пятьдесят "; break;
case "6": strResNumber += "шестьдесят "; break;
case "7": strResNumber += "семьдесят "; break;
case "8": strResNumber += "восемьдесят "; break;
case "9": strResNumber += "девяносто "; break;
default: strResNumber += ""; break;
}
strParts[1] = strParts[1].Substring(1, 1);
}
if (strParts[1].Length == 1)
{
switch (strParts[1])
{
case "0": strResNumber += "ноль "; break;
case "1": strResNumber += "один "; break;
case "2": strResNumber += "два "; break;
case "3": strResNumber += "три "; break;
case "4": strResNumber += "четыре "; break;
case "5": strResNumber += "пять "; break;
case "6": strResNumber += "шесть "; break;
case "7": strResNumber += "семь "; break;
case "8": strResNumber += "восемь "; break;
case "9": strResNumber += "девять "; break;
default: strResNumber += ""; break;
}
strParts[1] = "";
}
switch (fracCount)
{
case 3: strResNumber += "тысячных"; break;
case 2: strResNumber += "сотых"; break;
case 1: strResNumber += "десятых"; break;
default: strResNumber += ""; break;
}
Console.WriteLine("Результат: {0}", strResNumber);
}
else
Console.WriteLine("Полученное число больше 1000!");
Console.ReadKey();
}
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.06.2013, 21:20
Ответы с готовыми решениями:

Не запускаются написанные приложения
Здравстуйте, изачаю с# на Visual studio 2010/2013 Программы работают через Debug(Отладку) но запуск без отладки или из .exe файла...

Вывести слова, написанные с большой буквы
Дана послед-сть слов через(,). Вывести слова, написанные с большой буквы( причем буквы в них нап-ть в обр порядк). С#. спс заранеее!

Можно ли запускать приложения написанные на FW1.1 на машине где стоит только FW 2.0?
Здравствуйте! Можно ли запукскать приложения написанные на FW1.1 на машине где стоит только FW 2.0? Если нет, то как в Vs 2005 сделать...

7
15 / 15 / 1
Регистрация: 05.04.2013
Сообщений: 94
11.06.2013, 03:02
NumberString.cs
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace abc
{
    public class NumberString
    {
        public long NumOfValue { get; private set; }
        public string LineOfValue { get; private set; }
        private string _pathFile = @"D:\digits.dat";
 
        private Dictionary<string, long> digits = new Dictionary<string, long>();
 
        public NumberString(string lineOfValue)
        {
            if (File.Exists(_pathFile))
            {
                using (StreamReader st = new StreamReader(_pathFile))
                {
                    string[] strNum = new string[2];
                    for (int i = 0; !st.EndOfStream; i++)
                    {
                        strNum = st.ReadLine().Split(' ');
                        digits[strNum[0]] = Convert.ToInt64(strNum[1]); 
                    }
                }
            }
            else
            {
                Console.WriteLine("Ошибка: файла с даннными не существует");
                return;
            }
 
            if (LineToNumValue(lineOfValue))
                LineOfValue = lineOfValue;
            else
                Console.WriteLine("Ошибка: орфография или число вне диапазона");
        }
 
        private bool LineToNumValue(string lineOfValue)
        {
            string[] str = lineOfValue.Split(' ');
            long mainVal = 0;
            long hundrVal = 0;
 
            for (int i = 0; i < str.Length; i++)
            {
                if (!digits.ContainsKey(str[i]))
                    return false;
 
                if (digits[str[i]] <= 900)
                    hundrVal += digits[str[i]];
                else if (hundrVal == 0)
                    mainVal += digits[str[i]];
                else
                {
                    mainVal += hundrVal * digits[str[i]];
                    hundrVal = 0;
                }
 
                if (i + 1 >= str.Length)
                    mainVal += hundrVal;
            }
 
            NumOfValue = mainVal;
            return true;
        }
    }
}
Program.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
 
namespace abc
{
    class Program
    {
        static void Main(string[] args)
        {
            NumberString myStr = new NumberString("девятьсот тридцать семь миллиардов сто семнадцать миллионов шестьсот пятнадцать тысяч девятьсот один");
            Console.WriteLine(myStr.NumOfValue);
 
            Console.ReadKey();
        }
    }
}
digits.dat
Code
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
нуль 0
ноль 0
один 1
одна 1
два 2
две 2
три 3
четыре 4
пять 5
шесть 6
семь 7
воесь 8
девять 9
десять 10
одинадцать 11
двенадцать 12
тринадцать 13
четырнадцать 14
пятнадцать 15
шестнадцать 16
семнадцать 17
восемнадцать 18
девятнадцать 19
двадцать 20
тридцать 30
сорок 40
пятьдесят 50
шестьдесят 60
семьдесят 70
восемьдесят 80
девяносто 90
сто 100
двести 200
триста 300
четыреста 400
пятьсот 500
шестьсот 600
семьсот 700
восемьсот 800
девятьсот 900
тысяча 1000
тысяч 1000
тысячи 1000
миллион 1000000
миллионов 1000000
миллиона 1000000
миллиард 1000000000
миллиардов 1000000000
миллиарда 1000000000
триллион 1000000000000
триллионов 1000000000000
триллиона 1000000000000
2
-17 / 0 / 1
Регистрация: 17.04.2013
Сообщений: 60
11.06.2013, 17:52  [ТС]
А код, подобный коду примера задания реально написать, а то мне такой-то и нужен?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
11.06.2013, 18:05
JudFai, небольшие поправки только внесу:
1)
C#
1
private string _pathFile = @"D:\digits.dat";
лучше изменить на
C#
1
private const string PathFile = @"D:\digits.dat"; //принято константы писать как методы с большой, даже приватные
2) лучше сериализовывать сразу словарь, тогда будет намного быстрее проходить десериализация, и места будет меньше кушать. Если нужна скорость - сериализуйте с помощью BinaryFormatter, если не нужна - то XMLFormatter (тогда нужно будет поправлять также свойство Count, но это несложно). Зато выигрыш по скорости и памяти существенный

Добавлено через 46 секунд
JudFai, еще можно добавить "полтора", "дюжина", "с половиной"
1
177 / 94 / 10
Регистрация: 27.05.2013
Сообщений: 290
11.06.2013, 18:52
Да тут не много строк, можно статичный словарик запилить прямо в классе.
0
15 / 15 / 1
Регистрация: 05.04.2013
Сообщений: 94
11.06.2013, 19:39
Думал запилить в классе, но решил в файле, т.к. сам ещё только учусь. Любые конструктивные предложение и критику, как говорится для меня "в кассу".

Psilon, В принципе да, логичнее путь в виде константы.
0
-17 / 0 / 1
Регистрация: 17.04.2013
Сообщений: 60
11.06.2013, 20:24  [ТС]
попробовал что-то в первоначальном коде исправить (скажу честно, на C# впервые обращаю внимание, просто преподу по информатике вдруг захотелось нам его показать... так что я полный ноль во всем этом), и вот что вышло
...
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
using System;
using System.Collections.Generic;
using System.Text;
namespace StringExample
{
    class Program
    {
        static void Main(string[] args)
        {
            //Решение задачи преследует сугубо академические цели. Решение является не оптимальным.
            Console.WriteLine("Введите число, используя слова. Например: восемьсот семьдесят пять целых,двести сорок четыре тысячных :");
            string strNumber = Console.ReadLine(); //Ввели число, оно может быть как с точкой, так и с запятой
            string[] strParts = strNumber.Split('.');
            if (strParts[0] == "") strParts[0] = "ноль целых";
            яif (strParts[1] == "0") strParts[1] = "ноль целых";
            {
                string strResNumber = "";//Результирующая строка
                if (strParts[0].Length == 3)
                {
                    switch (strParts[0].Substring(0, 1))
                    {
                        case "сто ": strResNumber += "1"; break;
                        case "двести ": strResNumber += "2"; break;
                        case "триста ": strResNumber += "3"; break;
                        case "четыреста ": strResNumber += "4"; break;
                        case "пятьсот ": strResNumber += "5"; break;
                        case "шестьсот ": strResNumber += "6"; break;
                        case "семьсот ": strResNumber += "7"; break;
                        case "восемьсот ": strResNumber += "8"; break;
                        case "девятьсот ": strResNumber += "9"; break;
                        default: strResNumber += ""; break;
                    }
                    strParts[0] = strParts[0].Substring(1, 2);
                }
                if (strParts[0].Length == 2 && strParts[0].Substring(0, 1) == "ноль")
                {
                    switch (strParts[0].Substring(0, 2))
                    {
                        case "десять ": strResNumber += "10"; break;
                        case "одиннадцать ": strResNumber += "11"; break;
                        case "двенадцать ": strResNumber += "12"; break;
                        case "тринадцать ": strResNumber += "13"; break;
                        case "четырнадцать ": strResNumber += "14"; break;
                        case "пятнадцать ": strResNumber += "15"; break;
                        case "шестнадцать ": strResNumber += "16"; break;
                        case "семнадцать ": strResNumber += "17"; break;
                        case "восемнадцать ": strResNumber += "18"; break;
                        case "девятнадцать ": strResNumber += "19"; break;
                        default: strResNumber += ""; break;
                    }
                    strParts[0] = "";
                }
                if (strParts[0].Length == 2)
                {
                    switch (strParts[0].Substring(0, 1))
                    {
                        case "двадцать ": strResNumber += "20"; break;
                        case "тридцать ": strResNumber += "30"; break;
                        case "сорок ": strResNumber += "40"; break;
                        case "пятьдесят ": strResNumber += "50"; break;
                        case "шестьдесят ": strResNumber += "60"; break;
                        case "семьдесят ": strResNumber += "70"; break;
                        case "восемьдесят ": strResNumber += "80"; break;
                        case "девяносто ": strResNumber += "90"; break;
                        default: strResNumber += ""; break;
                    }
                    strParts[0] = strParts[0].Substring(1, 1);
                }
                if (strParts[0].Length == 1)
                {
                    switch (strParts[0])
                    {
                        case "ноль ": strResNumber += "0"; break;
                        case "один ": strResNumber += "1"; break;
                        case "два ": strResNumber += "2"; break;
                        case "три ": strResNumber += "3"; break;
                        case "четыре ": strResNumber += "4"; break;
                        case "пять ": strResNumber += "5"; break;
                        case "шесть ": strResNumber += "6"; break;
                        case "семь ": strResNumber += "7"; break;
                        case "восемь ": strResNumber += "8"; break;
                        case "девять ": strResNumber += "9"; break;
                        default: strResNumber += ""; break;
                    }
                    strParts[0] = "";
                }
                strResNumber += ",";
                //Обработаем дробную часть
                //Сократим дробную часть до 3-х значащих символов
                if (strParts[1].Length > 3)
                    strParts[1] = strParts[1].Substring(0, 3);
                int fracCount = strParts[1].Length;
                if (strParts[1].Length == 3)
                {
                    switch (strParts[1].Substring(0, 1))
                    {
                        case "сто ": strResNumber += "1"; break;
                        case "двести ": strResNumber += "2"; break;
                        case "триста ": strResNumber += "3"; break;
                        case "четыреста ": strResNumber += "4"; break;
                        case "пятьсот ": strResNumber += "5"; break;
                        case "шестьсот ": strResNumber += "6"; break;
                        case "семьсот ": strResNumber += "7"; break;
                        case "восемьсот ": strResNumber += "8"; break;
                        case "девятьсот ": strResNumber += "9"; break;
                    }
                    strParts[1] = strParts[1].Substring(1, 2);
                }
                if (strParts[1].Length == 2 && strParts[1].Substring(0, 1) == "1")
                {
                    switch (strParts[1].Substring(0, 2))
                    {
                        case "десять ": strResNumber += "10"; break;
                        case "одиннадцать ": strResNumber += "11"; break;
                        case "двенадцать ": strResNumber += "12"; break;
                        case "тринадцать ": strResNumber += "13"; break;
                        case "четырнадцать ": strResNumber += "14"; break;
                        case "пятнадцать ": strResNumber += "15"; break;
                        case "шестнадцать ": strResNumber += "16"; break;
                        case "семнадцать ": strResNumber += "17"; break;
                        case "восемнадцать ": strResNumber += "18"; break;
                        case "девятнадцать ": strResNumber += "19"; break;
                        default: strResNumber += ""; break;
                    }
                    strParts[1] = "";
                }
                if (strParts[1].Length == 2)
                {
                    switch (strParts[1].Substring(0, 1))
                    {
                        case "двадцать ": strResNumber += "20"; break;
                        case "тридцать ": strResNumber += "30"; break;
                        case "сорок ": strResNumber += "40"; break;
                        case "пятьдесят ": strResNumber += "50"; break;
                        case "шестьдесят ": strResNumber += "60"; break;
                        case "семьдесят ": strResNumber += "70"; break;
                        case "восемьдесят ": strResNumber += "80"; break;
                        case "девяносто ": strResNumber += "90"; break;
                        default: strResNumber += ""; break;
                    }
                    strParts[1] = strParts[1].Substring(1, 1);
                }
                if (strParts[1].Length == 1)
                {
                    switch (strParts[1])
                    {
                        case "ноль ": strResNumber += "0"; break;
                        case "один ": strResNumber += "1"; break;
                        case "два ": strResNumber += "2"; break;
                        case "три ": strResNumber += "3"; break;
                        case "четыре ": strResNumber += "4"; break;
                        case "пять ": strResNumber += "5"; break;
                        case "шесть ": strResNumber += "6"; break;
                        case "семь ": strResNumber += "7"; break;
                        case "восемь ": strResNumber += "8"; break;
                        case "девять ": strResNumber += "9"; break;
                        default: strResNumber += ""; break;
                    }
                    strParts[1] = "";
                }
                switch (fracCount)
                {
                }
                Console.WriteLine("Результат: {ноль}", strResNumber);
             
            }
            
        }
    }
}
...
запуск приложения идет, но вот с остальным всем проблема неимоверная... поможете, люди добрые?
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
29.09.2013, 14:50
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
 internal class Program
    {
        private enum e2
        {
            ноль = 0,
            один,
            два,
            три,
            четыре,
            пять,
            шесть,
            семь,
            восемь,
            девять = 9,
            десять = 10,
            одиннадцать = 11,
            двенадцать = 12,
            тринадцать = 13,
            четырнадцать = 14,
            пятнадцать = 15,
            шестнадцать = 16,
            семнадцать = 17,
            восемнадцать = 18,
            девятнадцать = 19,
            двадцать = 20,
            тридцать = 30,
            сорок = 40,
            пятьдесят = 50,
            шестьдесят = 60,
            семьдесят = 70,
            восемьдесят = 80,
            девяносто = 90,
            сто = 100,
            двести = 200,
            триста = 300,
            четыреста = 400,
            пятьсот = 500,
            шестьсот = 600,
            семьсот = 700,
            восемьсот = 800,
            девятьсот = 900
        };
 
        private static void Main()
        {
            while(true)
            {
                //int[] abc = Console.ReadLine().Split().Select(int.Parse).ToArray();
                //Console.WriteLine("sum: {0}", sum(abc[0],abc[1],abc[2]));
                //Console.WriteLine("prod: {0}", prod(abc[0], abc[1], abc[2]));
                Console.WriteLine(NumToText());
            }
            Console.ReadKey();
        }
 
        private static string NumToText()
        {
            string s = Console.ReadLine();
            e2 t = (e2)((s[0] - '0') * 100);
            e2 t1 = (e2)(s[1] - '0' == 1 ? (s[1] - '0') * 10 + s[2] - '0' : (s[1] - '0') * 10);
            e2 t2 = (e2)(s[2] - '0');
            return string.Format("{0}{1}{2}", t, s[1] - '0' == 0 ? "" : " " + t1, s[1] - '0' == 1 || (s[2] - '0') == 0 ? "" : " " + t2);
        }
 
        private static int sum(int a, int b, int c)
        {
            return (a > 0 ? a : 0) +  (b > 0 ? b : 0) + (c > 0 ? c : 0);
        }
 
        private static long prod(int a, int b, int c)
        {
            med3(ref a, ref b, ref c);
            return (long)a*c;
        }
 
        private static void med3(ref int a, ref int b, ref int c)
        {
            CompareSwap(ref a, ref c);
            CompareSwap(ref a, ref b);
            CompareSwap(ref b, ref c);
        }
 
        private static void Swap(ref int a, ref int  b)
        {
            int t = a; a = b; b = t;
        }
 
        private static void CompareSwap(ref int a, ref int b)
        {
            if ((a != b) && a > b)
                Swap(ref a, ref b);
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2013, 14:50
Помогаю со студенческими работами здесь

Если запускать из C# программы библиотеки написанные на C++, они будут работать медленнее нативного кода С++?
Добрый день! Я начал работать с WPF, и мне он очень понравился. Но я работаю над проектом, которому нужна максимальная скорость...

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

Как подключить dll, написанные на "чистом" С++?
Здравствуйте. Написал программу обработки изображений на C# (VS2010, .Net2). Программа, как и следовало ожидать, скоростью не отличается....

Проверить, есть ли в записи числа m цифры, совпадающие с цифрами в записи числа n
не решается задачка :с помогите, пожалуйста. все что смог, изложил. это подпрограмма если что сделать с помощью циклов, никаких строковых...

Запись числа римскими цифрами
Всем доброго времени суток. Третий день не могу подобрать более-менее внятный алгоритм к такой задаче - на вход программе задаётся строка...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru