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

Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
02.07.2010, 11:11     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #1
Приветствую форумчан, прошу момочь с задачей : Сложить две денежные суммы в рублях и копейках, заданные прописью. Результат вывести также прописью. Хоть алгоритм намекните!!! или так чтобы я понял. Заранее спасибо!:-). А если и код кто напишет с коменнтариями вообще замечательно:-)))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2010, 11:11     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью
Посмотрите здесь:

Вывести число прописью C++
Вывести возраст прописью C++
C++ Написать денежную сумму прописью
C++ Вывести цифру прописью
C++ Сложение двух денежных сумм
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
02.07.2010, 11:13     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #2
ах, надо прописью сложить
Serg112
 Аватар для Serg112
8 / 8 / 1
Регистрация: 28.06.2010
Сообщений: 24
02.07.2010, 12:50     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #3
Как понять прописью?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
02.07.2010, 12:53     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #4
Цитата Сообщение от Serg112 Посмотреть сообщение
Как понять?
"два рубля тридцать копеек" + "пять рублей двадцать копеек" = "семь рублей пятьдесят копеек"
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
02.07.2010, 13:36     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #5
Можно сделать опираясь на примеры в этой теме: Вывести число прописью
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
02.07.2010, 14:21  [ТС]     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #6
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Можно сделать опираясь на примеры в этой теме: Вывести число прописью
о , один что то существенное посоветовал, прописью значит заданно словами :-) необходимо перевести в число, сложить числа и перевести обратно в слова:-))) Dima спасибо за подсказку!!!

Добавлено через 1 минуту
А код накидать кто нибудь может , если не трудно:-))

Добавлено через 58 секунд
пример хороший но наоборот как сделать не соображу!!!

Добавлено через 15 минут
на будущее хотел бы пояснить число заданно :пример "Двадцать три рубля пять копеек" таких числа два, их надо как-то сложить переведя в целое число, при чем копейки отдельно от рублей и результат вывести так же как " сорок шесть рублей пять копеек" .Вроде задание внятно написал:-((( надеялся помогут!!! :-)))
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
02.07.2010, 14:29     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #7
Цитата Сообщение от SergProgC++ Посмотреть сообщение
А код накидать кто нибудь может , если не трудно:-))
А самому попробовать?
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
02.07.2010, 16:00  [ТС]     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #8
Побывал не получаеться найти совпадения в строковом массиве

Добавлено через 1 минуту
да и после первой цифры вообще не знаю что делать:-((

Добавлено через 1 минуту
Я. же только учусь :-)))) мне хотя бы последовательность (алгоритм), ну можно и на примере кода!!!

Добавлено через 51 секунду
Тут раздел помощи начинающим как я понимаю :-))

Добавлено через 6 минут
Вот я как раз им и являюсь, С++ изучил до ООП . Поэтому и прощу помощью, мне бы что нибудь по существенней, чем цитирование моего задания или то что я пишу :-)))

Добавлено через 1 час 3 минуты
Мне реальная помощь нужна подскажите плиииииизззззз!!!! :-(
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
02.07.2010, 17:25     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #9
Вам нужна не помощь, вам нужна готовая программа.
Вам в этот раздел: http://www.cyberforum.ru/order-program/

ам

 Комментарий модератора 
Редирект на фриланс запрещен, в следующий раз накажу
Serg112
 Аватар для Serg112
8 / 8 / 1
Регистрация: 28.06.2010
Сообщений: 24
03.07.2010, 00:55     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Всё я понял скоро будет готово!

Добавлено через 1 час 59 минут
Незнаю у меня бошка несоображает завтрв утром ещё подуваю, а пока вон чё получается:

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
#include <ctype.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
/* Еденици */
#define n1 "один"
#define n2 "два"
#define n3 "три"
#define n4 "четыри"
#define n5 "пять"
#define n6 "шесть"
#define n7 "семь"
#define n8 "восемь"
#define n9 "девять"
/* Десятки */
#define n10 "десять"
#define n20 "двадцать"
#define n30 "тридцать"
#define n40 "сорок"
#define n50 "пятьдесят"
#define n60 "шестьдесят"
#define n70 "семьдесят"
#define n80 "восемьдесят"
#define n90 "девяносто"
/* Сотни */
#define n100 "сто"
#define n200 "двести"
#define n300 "триста"
#define n400 "четыреста"
#define n500 "пятьсот"
#define n600 "шестьсот"
#define n700 "семьсот"
#define n800 "восемьсот"
#define n900 "девятсот"
 
#define gowchar( s ) while( (*(s) != '-') && (*(s) != '\0') ) s++
 
 
int kolvo_slov( char *s )
{
  int k = 0;
  while( *s != '\0' )
  {
    gowchar( s );
    if( *s != '\0' ) s++;
    k++;
  }
  return k;
}
 
 
char* slovo( char *p, char *o )
{
  while( (*o != '-') && (*o != '\0')  )
    *p++ = *o++;
  *p = '\0';
  return o;
}
 
 
int donumber( char *s, int kc )
{
  int n = 0;
  char nc[10] = "\0";
  switch( kc )
  {
    case 3:
    {
      s = slovo( nc, s );
      if( !strcmp( n100, nc ) ) n = 100;
      if( !strcmp( n200, nc ) ) n = 200;
      if( !strcmp( n300, nc ) ) n = 300;
      if( !strcmp( n400, nc ) ) n = 400;
      if( !strcmp( n500, nc ) ) n = 500;
      if( !strcmp( n600, nc ) ) n = 600;
      if( !strcmp( n700, nc ) ) n = 700;
      if( !strcmp( n800, nc ) ) n = 800;
      if( !strcmp( n900, nc ) ) n = 900;
    }
    case 2:
    {
      s = slovo( nc, s );
      if( !strcmp( n10, nc ) ) n += 10;
      if( !strcmp( n20, nc ) ) n += 20;
      if( !strcmp( n30, nc ) ) n += 30;
      if( !strcmp( n40, nc ) ) n += 40;
      if( !strcmp( n50, nc ) ) n += 50;
      if( !strcmp( n60, nc ) ) n += 60;
      if( !strcmp( n70, nc ) ) n += 70;
      if( !strcmp( n80, nc ) ) n += 80;
      if( !strcmp( n90, nc ) ) n += 90;
    }
    case 1:
    {
      s = slovo( nc, s );
      if( !strcmp( n1, nc ) ) n += 1;
      if( !strcmp( n2, nc ) ) n += 2;
      if( !strcmp( n3, nc ) ) n += 3;
      if( !strcmp( n4, nc ) ) n += 4;
      if( !strcmp( n5, nc ) ) n += 5;
      if( !strcmp( n6, nc ) ) n += 6;
      if( !strcmp( n7, nc ) ) n += 7;
      if( !strcmp( n8, nc ) ) n += 8;
      if( !strcmp( n9, nc ) ) n += 9;
    }
  }
  return n;
}
 
 
int main( void )
{
  char s[256];
  int n;
  scanf( "%s", &s );
  n = donumber( s, kolvo_slov( s ) );
  printf( "%d", n );
  getch();
}
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
06.07.2010, 09:23  [ТС]     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #11
Спасибо Серега , а ты прокомментировать ее можешь а то не везде понятно че делаешь? вот это например gowchar( s );

Добавлено через 4 минуты
Цитата Сообщение от neske Посмотреть сообщение
Вам нужна не помощь, вам нужна готовая программа.
Вам в этот раздел: http://www.cyberforum.ru/order-program/

ам
Если бы мне фриланс нужен был то я создал бы тему, куплю программу :-))), А я то как видешь я создал тему, стобы помогли найти выход из положения. Уверен эта тема многим потом пригодиться :-))) если придем к нормальному решению поставленной задачи :-)))
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
06.07.2010, 12:42     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #12
Цитата Сообщение от SergProgC++ Посмотреть сообщение
Если бы мне фриланс нужен был то я создал бы тему, куплю программу :-))), А я то как видешь я создал тему, стобы помогли найти выход из положения. Уверен эта тема многим потом пригодиться :-))) если придем к нормальному решению поставленной задачи :-)))
В смысле - всё то же самое, но на халяву. С Вашей стороны и шага небыло сделано в сторону решения задачи. В Вашем представлении "решить задачу" - это дождаться, когда кто-то её за Вас решит, да ещё и объяснит, что к чему?
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
06.07.2010, 13:21  [ТС]     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #13
Если бы я знал, как решить то само собой я бы решил, :-))) А так что же за форум такой где помочь отказываются :-((

Добавлено через 1 минуту
Просто не вижу смысла выкладывать свои наброски кода если он не работает как надо
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
06.07.2010, 13:44     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #14
Цитата Сообщение от SergProgC++ Посмотреть сообщение
А так что же за форум такой где помочь отказываются :-((
Просто не вижу смысла выкладывать свои наброски кода если он не работает как надо
Помочь никто не отказывался, просто ты просишь уже готовое решение - забесплатно. А вот свой код как раз таки есть смысл выкладывать, тебе сразу же объяснят, где ошибки (читай: ПОМОГУТ), и подскажут, что делать дальше. Так что не стесняйся, выкладывай.

Добавлено через 9 минут
А вообще, прочитай-ка эту тему для начала.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.07.2010, 15:25     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #15
задачка интересная.
написал небольшую функцию для чисел от 0 до 999. (автор требовал только пример )

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
#include <iostream>
#include <conio.h>
#include <vector>
 
int tonumber(std::string &amount, std::vector<std::string> &dictionary, int size);
 
int main()
{
    int size=10; //максимальная длина словаря
    std::vector<std::string> dictionary(size,""); //создать словарь
 
    std::string amount=" odin "; //сумма прописью
    std::cout<<tonumber(amount,dictionary,size);
    std::cout<<std::endl;
 
    amount=" odinnadcat "; //сумма прописью
    std::cout<<tonumber(amount,dictionary,size);
    std::cout<<std::endl;
 
    amount=" chetire "; //сумма прописью
    std::cout<<tonumber(amount,dictionary,size);
    std::cout<<std::endl;
 
    amount="chetirecta odinnadcat"; //сумма прописью
    std::cout<<tonumber(amount,dictionary,size);
    std::cout<<std::endl;
 
    amount="chetirecta cemdecyat pyat"; //сумма прописью
    std::cout<<tonumber(amount,dictionary,size);
    std::cout<<std::endl;
 
    amount="~_) cto 6 corok tri  !!!!!"; //сумма прописью
    std::cout<<tonumber(amount,dictionary,size);
    std::cout<<std::endl;
 
    amount="devyatcot + devyanocto - devyat"; //сумма прописью
    std::cout<<tonumber(amount,dictionary,size);
    std::cout<<std::endl;
 
    return EXIT_SUCCESS;
}
 
 
int tonumber(std::string &amount, std::vector<std::string> &dictionary, int size){
    int j=0; //позиция в словаре
    std::string allow; //переменная, для выделения слов из прописи
    int i=0; //позиция в прописи
 
    //создание словаря
    while( i<amount.size() ){ //пока есть символы в прописи
        while( isalpha(amount[i]) ){
            allow+=amount[i];
            ++i;
        }
         while( !isalpha(amount[i]) )
            ++i;
        if( i<=amount.size() ){
            dictionary[j]=allow;
            allow.clear();
            ++j;
        }
        if (i>=amount.size())
            dictionary[j]=allow;
    }
 
    const std::string dec[10]={"decyat","odinnadcat","dvenadcat","trinadcat","chetirnadcat","pyatnadcat","shestnadcat","cemnadcat","vocemnadcat","devyatnadcat"};
    const std::string basis[3][10]={
        {"NULL","cto","dvecti","tricta","chetirecta","pyatcot","shectcot","cemcot","vocemcot","devyatcot"},
        {"NULL","desyat","dvadcat","tridcat","corok","pyatdecyat","shectdecyat","cemdecyat","vocemdecyat","devyanocto"},
        {"NULL","odin","dva","tri","chetire","pyat","shect","cem","vocem","devyat"}};
 
    int result=0;
    //int ii=0;
   // while( ii<size ||  !dictionary[ii].empty())
    for (int ii=0; ii<size; ++ii) //цикл по dictionary
        for (int i=0; i<3; ++i) //цикл по строкам basis
            for (int j=0; j<10; ++j){ //цикл по столбцам basis
                if (basis[i][j]==dictionary[ii])
                    result=result*10+j;
                    else
                    for (int i=0; i<10; ++i) //цикл по dec
                        if (dec[i]==dictionary[ii]){
                            result=result*100+(10+i);
                            //cout<<result;
                           // getch();
                            //break;
                            goto br;
                        }
            }
            br:
 
    return result;
}
с русским языком решил не заморачиватся, поэтому слова на транслите. SergProgC++ - до INT_MAX
примерно таким же образом.
Програмка работает на основе так называемого словаря, хотя можно было и без него, но мне так показалось проще. Между словами могут быть любые символы (-=Ё№;") программа их игнорирует.

Добавлено через 13 минут
а преобразование числа опять в пропись уже давали ссылку выше
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.07.2010, 15:28     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #16
результат
Миниатюры
Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью  
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
07.07.2010, 20:56  [ТС]     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #17
Попробую разобраться в этом :-)), только я не понял к чему скриншот :-(

Добавлено через 2 минуты
хотя нет, все же понял,:-)))))

Добавлено через 55 секунд
И что в этом словаре все числа описывать надо? от 0 до 999 прописью
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.07.2010, 21:00     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #18
SergProgC++, ничего там описывать ненадо, Вам надо сделать примерно такой массив
C++
1
2
3
4
    const std::string basis[3][10]={
        {"NULL","cto","dvecti","tricta","chetirecta","pyatcot","shectcot","cemcot","vocemcot","devyatcot"},
        {"NULL","desyat","dvadcat","tridcat","corok","pyatdecyat","shectdecyat","cemdecyat","vocemdecyat","devyanocto"},
        {"NULL","odin","dva","tri","chetire","pyat","shect","cem","vocem","devyat"}};
где будут слова: миллион миллиона миллионов тысяча итд.

ну скриншот к тому чтобы показать что программа работает

а это словарь, я сделал чтобы легче было число переводить, но вы в своей реализации можете все подргому сделать
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
07.07.2010, 22:19  [ТС]     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #19
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
#include <iostream.h>//Подключение библиотеки ввода/вывода
#include <string.h>//Подключение библиотеки функций для работы со строками
#include <windows.h>//Подключение библиотеки функций Windows
 
void RusVivod(char RusText[]);//прототип Функции вывода русских букв в консоль
void ForStroki(char Stroka[]);// прототип функции форматирования строки в число
 
 
const int Raz = 100;
 
int main() //главная функция
{
int DenShislo=0;
char DenStr[Raz];
 
RusVivod("Введите первую денежную сумму прописью:"); cout<<"\n";
 
cin.getline (DenStr, Raz);
 
ForStroki(DenStr);
 
RusVivod("Введенная вами денежная сумма:"); cout<<DenShislo<<"\n";
 
return 0;
}
 
void ForStroki(char Stroka[])// функция форматирования строки в число
{
    int i,RezSr;
    static char *Sotni[]={"Null","Сто","Двести","Тристо","Четыресто","Пятьсот","Шестьсот","Семьсот","Восемьсот","Девятьсот"};// массив сотен
    static char *Decatki[]={"Null","Десять","Двадцать","Тридцать","Сорок","Пятьдесят","Шестьдесят","Семьдесят","Восемьдесят","Девяносто"};// массив десяток
    static char *Edenici[]={"Null","Один","Два","Три","Четыре","Пять","Шесть","Семь","Восемь","Девять"};// массив единиц
 
 
    for (i=0; i=='\0'; i++)
    {
        
        if (Stroka[i]==' ')
        {
            
            
        }
 
    }
 
}
 
 
 
 
 
 
 
 
 
 
 
void RusVivod(char RusText[])//Функция вывода русских букв
{
char Vivod[256];
 
    CharToOem(RusText , Vivod);
    cout<<Vivod<<"\n";
 
}
Вот мой не законченный код , подскажешь что дальше?

Добавлено через 5 минут
А твой код в MVC 6 выдает 13 ошибок :-(((

Добавлено через 5 минут
Кстати для easybudda, Со фрилансом не хочу замарачиваться потому, что сам хочу все понять и изучить, а не готовое получить и сдать. :-))) это так на будующее.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2010, 11:11     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью
Еще ссылки по теме:

Вывести оценку прописью C++
Вывести число прописью C++
C++ Вывести денежную сумму прописью

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

Или воспользуйтесь поиском по форуму:
SergProgC++
Эксперт GPSS
 Аватар для SergProgC++
314 / 316 / 59
Регистрация: 02.07.2010
Сообщений: 1,315
12.07.2010, 11:11  [ТС]     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью #20
Привет еще раз всем , все я сделал свое задание. Кого интересует код выложу после сессии. Делал с помощью типа string и функций стандартной библиотеки.Лично для себя считаю тему закрытой.Спасибо :-)))

 Комментарий модератора 
Все обсуждения на форуме, если хотите поделится исходниками - выкладывайте их на форум
Yandex
Объявления
12.07.2010, 11:11     Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью
Ответ Создать тему
Опции темы

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