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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
sus_scorfa
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 18
#1

Вывод числа на экран в словесной форме - C++

06.01.2009, 15:00. Просмотров 2783. Ответов 11
Метки нет (Все метки)

начал изучать учебник

Динман М.И. - C++. Освой на примерах

и там в конце первой главы упражнение

звучит так

"Напишите программу которая выводит на экран словесную форму числа.
Например 143="сто сорок три", 10="десять"."


задача меня оч заинтересовала
но как решить не знаю....

задумка есть только такая:
определять сколько знаков в числе,на основание этого добавлять "словесную форму числа"....понятно что до 20 надо вбить числа вручную....в потом как хз....

уже читал про такие вещи как:

Перечислимые константы вводятся с помощью ключевого слова enum. Это обыч-
ные целые константы, которым приписаны уникальны и удобные для использования
обозначения. Примеры: enum { one=1, two=2, three=3,four=4};
enum {zero,one,two,three} – если в определении перечислимых
констант опустить знаки = и числовые значения, то значения будут приписываться по
умолчанию. При этом самый левый идентификатор получит значение 0, а каждый после-
дующий будет увеличиваться на 1.
enum { ten=10, three=3, four, five, six};
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Satur-
day} ;

и

" #define - указывает правила замены в тексте.
#define ZERO 0.0
Означает , что каждое использование в программе имени ZERO будет заменяться
на 0.0.
"

подскажите с чего начать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2009, 15:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод числа на экран в словесной форме (C++):

Вывод числа в 16-ричной форме - C++
Пушу на Visual C++ Нужно вывести число (char) в Edit Control (с String переменной m_Edit) в 16-ом виде (0x01)... char temp...

Разработать функцию, которая формирует стринг, что является словесной записью заданного числа - C++
Постановка задания: Разработать функцию, которая формирует стринг, что является словесным записью (числительным) заданного...

Вывод мантиссы числа на экран - C++
Имеется вещественное число 0.12*10^3. Двоичный эквивалент мантиссы равен примерно 0.00011110101110000101000111101. Нужно вывести на экран...

Вывод на экран числа от 1 до 5 следующим образом... - C++
Напишите фрагмент программы, которая будет выводить на экран числа от 1 до 5 следующим образом: 5 5 5 5 5 4 4 4 4 3 3 3 2 2 ...

вывод на экран (выводит числа из файла округленными) - C++
Программа выводит на экран числа из файла, так что числа стоящие на нечетных местах выводятся с одним знаком после запятой, а четных с...

Выведите массив на экран отводя на вывод каждого числа 6 символов - C++
Даны два числа n и m. Создайте двумерный массив int C и заполните его по следующим правилам: числа стоящих в строке 0 или в столбце 0...

11
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
06.01.2009, 15:27 #2
а как глава называется? Наверняка имеет значение, ведь это же закрепление изученного
0
sus_scorfa
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 18
06.01.2009, 15:29  [ТС] #3
Цитата Сообщение от manfeese Посмотреть сообщение
а как глава называется? Наверняка имеет значение, ведь это же закрепление изученного
в том то и дело что это первая глава

"Основы программирования"
0
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
06.01.2009, 15:39 #4
Ну в первую оередь надо выявить словесные константы, например

Код
один
два
три
четыре
пять
шесть
семь
восемь
девять
десять

[B]один[/B] на [I]дцать[/I]
[B]дв[/B]е на [I]дцать[/I]
[B]три[/B] на [I]дцать[/I]
[B]четыр[/B] на [I]дцать[/I]
[B]пят[/B] на [I]дцать[/I]
[B]шест[/B] на [I]дцать[/I]
[B]сем[/B] на [I]дцать[/I]
[B]восем[/B] на [I]дцать[/I]
[B]девят[/B] на [I]дцать[/I]

[B]два[/B] [I]дцать[/I]
[B]три[/B] [I]дцать[/I]
[U]сорок[/U]
[B]пять[/B] [COLOR="Blue"]десят[/COLOR]
[B]шест[/B] [COLOR="Blue"]десят[/COLOR]
[B]сем[/B] [COLOR="Blue"]десят[/COLOR]
[B]восем[/B] [COLOR="Blue"]десят[/COLOR]
[U]девяносто[/U]

[U]сто[/U]
и т.д.

Добавлено через 2 минуты 5 секунд
да ошибся, пят десят
0
sus_scorfa
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 18
06.01.2009, 15:54  [ТС] #5
Цитата Сообщение от manfeese Посмотреть сообщение
Ну в первую оередь надо выявить словесные константы, например

Код
один
два
три
четыре
пять
шесть
семь
восемь
девять
десять

[B]один[/B] на [I]дцать[/I]
[B]дв[/B]е на [I]дцать[/I]
[B]три[/B] на [I]дцать[/I]
[B]четыр[/B] на [I]дцать[/I]
[B]пят[/B] на [I]дцать[/I]
[B]шест[/B] на [I]дцать[/I]
[B]сем[/B] на [I]дцать[/I]
[B]восем[/B] на [I]дцать[/I]
[B]девят[/B] на [I]дцать[/I]

[B]два[/B] [I]дцать[/I]
[B]три[/B] [I]дцать[/I]
[U]сорок[/U]
[B]пять[/B] [COLOR="Blue"]десят[/COLOR]
[B]шест[/B] [COLOR="Blue"]десят[/COLOR]
[B]сем[/B] [COLOR="Blue"]десят[/COLOR]
[B]восем[/B] [COLOR="Blue"]десят[/COLOR]
[U]девяносто[/U]

[U]сто[/U]
и т.д.

Добавлено через 2 минуты 5 секунд
да ошибся, пят десят





ну это понятно
делать можно через :

Перечислимые константы вводятся с помощью ключевого слова enum. Это обыч-
ные целые константы, которым приписаны уникальны и удобные для использования
обозначения. Примеры: enum { one=1, two=2, three=3,four=4};
enum {zero,one,two,three} – если в определении перечислимых
констант опустить знаки = и числовые значения, то значения будут приписываться по
умолчанию. При этом самый левый идентификатор получит значение 0, а каждый после-
дующий будет увеличиваться на 1.
enum { ten=10, three=3, four, five, six};
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Satur-
day} ;


Но...вопрос в том как сделать что бы он определял любое число....

ведь если таким образом делать то можно до бесконечности вбивать словесные константы

может есть какая библиотека или функция....хз
0
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
06.01.2009, 15:57 #6
Ну вот самому и надо написать библиотеку. Все равно этим ктото занимается. Возьмись - будешь первым!
0
sus_scorfa
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 18
06.01.2009, 15:59  [ТС] #7
аххаха))))))ну ты юморист))))я еще не выехал как простые проги писать а ты говоришь библиотеку писать))))где можно прочесть как писать библиотеки?)))
0
Бартимеус
181 / 33 / 2
Регистрация: 29.10.2008
Сообщений: 283
06.01.2009, 17:58 #8
Жестокая книга...
0
proplayer
6 / 6 / 0
Регистрация: 05.01.2009
Сообщений: 85
06.01.2009, 18:04 #9
ПОчти такое я решал на программировании. Нафиг вам перечисления??? If и Mod вам поможет...
0
sus_scorfa
0 / 0 / 0
Регистрация: 25.12.2008
Сообщений: 18
06.01.2009, 18:43  [ТС] #10
подробнее можно...че как...
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.01.2009, 02:06 #11
sus_scorfa нужны строковые литералы (символьные массивы с \0 на конце), strcat, switch старайся не юзать, вместо него if'ы, число можно перевести в символьный вид

Код
    char line[100];

    sprintf(line, "%d", 143);
0
GalaX
697 / 569 / 21
Регистрация: 18.11.2008
Сообщений: 2,153
07.01.2009, 05:11 #12
нафигачил тут класс на пхп... си++ незнаю, но задача была интересная, поэтому полез в пхп
написано конечно не сказать что красиво (сам запутался в этом коде), но вроде работает:
PHP
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
$c = new CHISLO;
echo $c->get_chislo( 1151891 );
 
class CHISLO {
    private $arr = array('', 'один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять', 'десять',
                         'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать',
                         'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать');
    private $arr2 = array('', 'сто', 'двести', 'триста', 'четыреста');
    private $ar = array(
        1=>array('тысяч', 'тысяча', 'тысячи', 'тысячи', 'тысячи', 'тысяч', 'тысяч', 'тысяч', 'тысяч', 'тысяч'),
        array('миллионов', 'миллион', 'миллиона', 'миллиона', 'миллиона', 'миллионов', 'миллионов',
              'миллионов', 'миллионов', 'миллионов'),
        array('миллиардов', 'миллиард', 'миллиарда', 'миллиарда', 'миллиарда', 'миллиардов', 'миллиардов',
              'миллиардов', 'миллиардов', 'миллиардов'),
        array('триллионов', 'триллион', 'триллиона', 'триллиона', 'триллиона', 'триллионов', 'триллионов',
              'триллионов', 'триллионов', 'триллионов')
    );
 
    public function get_chislo($ch) {
        if( $ch<1000 )
            return $this->get_100($ch);
        $ch = preg_split('/(?=(\d{3})+(?!\d))/is', $ch, -1, PREG_SPLIT_NO_EMPTY);
        $ch = array_reverse($ch);
        $result[] = $this->get_100($ch[0]);
        for($i=1; $i<count($ch); $i++) {
            @$result[] = $this->get_100($ch[$i]) .' '. $this->ar[$i]{$ch[$i]%10};
        }
        $result[1] = str_replace('один', 'одна', $result[1]);
        $result[1] = str_replace('два', 'две', $result[1]);
        return join(' ', array_reverse($result));
    }
    private function get_100($ch) {
        $c1 = (int)($ch / 100);
        $c2 = $ch % 100;
        if( $c1<5 )
            $result = $this->arr2[$c1];
        else 
            $result = $this->arr[$c1] . 'сот';
        return @$result .' '. $this->get_10($c2);
    }
    private function get_10($ch) {
        $c1 = (int)($ch / 10);
        $c2 = $ch % 10;
        if( $ch<20 ) {
            $result = $this->arr[$ch];
        } else if( $ch<40 ) {
            $result = $this->arr[$c1] . 'дцать';
        } else if( $ch<50 ) {
            $result = 'сорок';
        } else if( $ch<90 ) {
            $result = substr( $this->arr[$c1], 0, -1 ) . 'десят';
        } else if( $ch<100 ) {
            $result = 'девяносто';
        }
        if( $ch>20 && $c2!=0 )
            $result .= ' ' . $this->arr[$c2];
        return $result;
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2009, 05:11
Привет! Вот еще темы с ответами:

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

Подсчитать общее количество букв в словесной записи чисел от 1 до 1000 - C++
Вопрос терзает меня. Подскажите почему не получается... хм, не получается получить правильный ответ )) Суть задачи. посчитать сумму букв...

Если -9<=с<=9, вывести величину числа в словесной форме с учетом знака - C (СИ)
используя SWITCH предусмотреть неправильного ввода исходных данных вводится целое число С. если -9&lt;=с&lt;=9 вывести величину числа в...

Запросить оценку (в числовой форме) от 2 до 5 и вывести ее в словесной форме - Delphi
Задание 3 Составить программу, которая запрашивала бы число (оценку в числовой форме) от 2 до 5 и в зависимости от ответа выводила в...


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

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

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