0 / 0 / 0
Регистрация: 10.04.2013
Сообщений: 20
1

Перевести число в число прописью

04.12.2013, 11:29. Показов 13970. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я никак не пойму как делать. Вроде задание простое. Задача на С#.
Программа принимает от пользователя строку, хранящую число со зна-ком и плавающей точкой, и выводит на экран строковый эквивалент этого числа прописью (например, ввод «-12.11» должен приводить к выводу «минус двенадцать целых одиннадцать сотых»). Мне нужен сам код.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2013, 11:29
Ответы с готовыми решениями:

Число прописью перевести в число
Доброго всем времени суток! Столкнулся с проблемой, нужно строку, к примеру "Одна тысяча...

Число прописью
написать программу, которая после введенного с клавиатуры числа(диапозон от 1 до 999),...

Вывести число прописью
Помогите разработать консольное приложение, с помощью которого целочисленное значение, вводимое с...

Вывести число прописью
Есть программа. В эдит в вожу: текстом задаю число от 0 до 999, после чего по нажатию на кнопку...

1
174 / 73 / 30
Регистрация: 20.11.2013
Сообщений: 358
04.12.2013, 13:23 2
Лучший ответ Сообщение было отмечено vladimir_cher как решение

Решение

Что касается задачи, vladimir_cher, тебе нужно написать процедуру преобразования целого числа, и применить ее для целой и для дробной части....
Код писать не буду он огромный будет и нудный...

вот тут есть написанный на VBA перевести очень просто....

Добавлено через 9 минут
ОООО! Нашел!)))
Кликните здесь для просмотра всего текста
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
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
 
 
        static string[] nums_1_9 = "ноль один два три четыре пять шесть семь восемь девять".Split();
        static string[] nums_10_19 = "десять одиннадцать двенадцать тринадцать четырнадцать пятнадцать шестнадцать семнадцать восемнадцать девятнадцать".Split();
        static string[] nums_20_90 = "ноль десять двадцать тридцать сорок пятьдесят шестьдесят семьдесят восемьдесят девяносто".Split();
        static string[] nums_100_900 = "ноль сто двести триста четыреста пятьсот шестьсот семьсот восемьсот девятьсот".Split();
        static string[] razrad = @" тысяч миллион миллиард триллион квадриллион квинтиллион секстиллион септиллион октиллион нониллион дециллион андециллион дуодециллион тредециллион кваттордециллион квиндециллион сексдециллион септемдециллион октодециллион новемдециллион вигинтиллион анвигинтиллион дуовигинтиллион тревигинтиллион кватторвигинтиллион квинвигинтиллион сексвигинтиллион септемвигинтиллион октовигинтиллион новемвигинтиллион тригинтиллион антригинтиллион".Split();
 
 
        static void Main(string[] args)
        {
            var n = "54308428790203478762340052723346983453487023489987231275412390872348475";
            //var n = "5412390872348475";
            //var n = "122000";
            Console.WriteLine(n);
            foreach (var s in solve(splitIntoCategories(n))) Console.WriteLine(s);
            Console.ReadLine();
        }
        //разбить на разряды
        static IEnumerable<string> splitIntoCategories(string s)
        {
            s = s.PadLeft(s.Length + 3 - s.Length % 3, '0');
            return  Enumerable.Range(0, s.Length/3).Select(i => s.Substring(i*3, 3));
        }
        //вывести название цифр в разряде
        static IEnumerable<string> solve(IEnumerable<string> n)
        {
            var ii = 0;
            foreach (var s in n)
            {
                var countdown = n.Count() - ++ii;
                yield return
                    String.Format(@"{0} {1} {2} {3}",
                        s[0] == '0' ?"" : nums_100_900[getDigit(s[0])],
                        getE1(s[1], s[2]),
                        getE2(s[1], s[2], countdown),
                        s == "000" ? "" : getRankName(s, countdown)
                    );
            }
 
        }
        //вторая цифра разряда
        private static string getE1(char p1, char p2)
        {
            if (p1 != '0')
            {
                if (p1 == '1')
                    return nums_10_19[getDigit(p2)];
                return nums_20_90[getDigit(p1)];
            }
            return "";
        }
        //третья цифра разряда
        private static string getE2(char p1, char p2 , int cd)
        {
                if (p1 != '1')
                {
                    if (p2 == '0') return ""; 
                    return (p2=='2'&&cd==1)?"две":nums_1_9[getDigit(p2)];
                }
            return "";
        }
 
        private static int getDigit(char p1)
        {
            return Int32.Parse(p1.ToString());
        }
        //вывести название разрядов
        private static string getRankName(string s, int ii)
        {
            if (ii == 0) return "";
            var r = razrad[ii];
            //10 11 ...
            if (s[1] == '1') return r + (ii == 1 ? "" : "ов");
 
            if (new[] { '2', '3', '4' }.Contains(s[2]))
            {
                return r + (ii == 1 ? "и" : "а");
            }
            else
                return r + (ii == 1 ? "" : "ов");
        }
    }
}


это для целого числа, тебе останется проверить + или - и вписать слова "целых" и "дробных"....

Добавлено через 1 минуту
Еще вот хороший вариант http://www.gotdotnet.ru/blogs/avk/928/
1
04.12.2013, 13:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2013, 13:23
Помогаю со студенческими работами здесь

Число - прописью. Работа с простыми числами
Написать программу, которая считывает с клавиатуры предложения и заменяет «0», «1» … «9» на...

Как вывести число (сумма, количество) прописью ?
Здраствуйте, как можно форматнуть число : 123.45 -&gt; &quot;сто двадцать три&quot; грн 45 коп 198.10 -&gt; &quot;сто...

Записать прописью ближайшее к заданному четное число из введенного диапазона
Я думаю, что ошибка возникает из-за того, что переменная ch видна только в пределах своих циклов,...

С клавиатуры вводится число от 1 до 1000. Программа должна вывести его прописью
Задача: с клавиатуры вводится число от 1 до 1000. Программа должна вывести его прописью. using...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru