Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
1

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

02.07.2010, 11:11. Показов 5342. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую форумчан, прошу момочь с задачей : Сложить две денежные суммы в рублях и копейках, заданные прописью. Результат вывести также прописью. Хоть алгоритм намекните!!! или так чтобы я понял. Заранее спасибо!:-). А если и код кто напишет с коменнтариями вообще замечательно:-)))
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2010, 11:11
Ответы с готовыми решениями:

Вывести денежную сумму прописью
можете написать программу в с++ пожалуйста,очень надо:( Записать число, заданное в формате...

Как на excele можно вывести сумму денег прописью?
например 3200 три тысяча двести (денежная единица может быть разной)

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

Записать ответ в файл прописью
как записать ответ в файл прописью? т.е. чтобы в корнях уравнений он выдавал не 0,3 допустим, а...

21
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
02.07.2010, 11:13 2
ах, надо прописью сложить
0
10 / 10 / 2
Регистрация: 28.06.2010
Сообщений: 24
02.07.2010, 12:50 3
Как понять прописью?
0
3507 / 2669 / 329
Регистрация: 11.03.2009
Сообщений: 6,104
02.07.2010, 12:53 4
Цитата Сообщение от Serg112 Посмотреть сообщение
Как понять?
"два рубля тридцать копеек" + "пять рублей двадцать копеек" = "семь рублей пятьдесят копеек"
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
02.07.2010, 13:36 5
Можно сделать опираясь на примеры в этой теме: Вывести число прописью
0
Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
02.07.2010, 14:21  [ТС] 6
Цитата Сообщение от .::.DIMA.::. Посмотреть сообщение
Можно сделать опираясь на примеры в этой теме: Вывести число прописью
о , один что то существенное посоветовал, прописью значит заданно словами :-) необходимо перевести в число, сложить числа и перевести обратно в слова:-))) Dima спасибо за подсказку!!!

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

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

Добавлено через 15 минут
на будущее хотел бы пояснить число заданно :пример "Двадцать три рубля пять копеек" таких числа два, их надо как-то сложить переведя в целое число, при чем копейки отдельно от рублей и результат вывести так же как " сорок шесть рублей пять копеек" .Вроде задание внятно написал:-((( надеялся помогут!!! :-)))
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
02.07.2010, 14:29 7
Цитата Сообщение от SergProgC++ Посмотреть сообщение
А код накидать кто нибудь может , если не трудно:-))
А самому попробовать?
0
Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
02.07.2010, 16:00  [ТС] 8
Побывал не получаеться найти совпадения в строковом массиве

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

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

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

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

Добавлено через 1 час 3 минуты
Мне реальная помощь нужна подскажите плиииииизззззз!!!! :-(
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
02.07.2010, 17:25 9
Вам нужна не помощь, вам нужна готовая программа.
Вам в этот раздел: https://www.cyberforum.ru/order-program/

ам

 Комментарий модератора 
Редирект на фриланс запрещен, в следующий раз накажу
0
10 / 10 / 2
Регистрация: 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();
}
1
Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
06.07.2010, 09:23  [ТС] 11
Спасибо Серега , а ты прокомментировать ее можешь а то не везде понятно че делаешь? вот это например gowchar( s );

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

ам
Если бы мне фриланс нужен был то я создал бы тему, куплю программу :-))), А я то как видешь я создал тему, стобы помогли найти выход из положения. Уверен эта тема многим потом пригодиться :-))) если придем к нормальному решению поставленной задачи :-)))
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12242 / 7409 / 1741
Регистрация: 25.07.2009
Сообщений: 13,602
06.07.2010, 12:42 12
Цитата Сообщение от SergProgC++ Посмотреть сообщение
Если бы мне фриланс нужен был то я создал бы тему, куплю программу :-))), А я то как видешь я создал тему, стобы помогли найти выход из положения. Уверен эта тема многим потом пригодиться :-))) если придем к нормальному решению поставленной задачи :-)))
В смысле - всё то же самое, но на халяву. С Вашей стороны и шага небыло сделано в сторону решения задачи. В Вашем представлении "решить задачу" - это дождаться, когда кто-то её за Вас решит, да ещё и объяснит, что к чему?
0
Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
06.07.2010, 13:21  [ТС] 13
Если бы я знал, как решить то само собой я бы решил, :-))) А так что же за форум такой где помочь отказываются :-((

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

Добавлено через 9 минут
А вообще, прочитай-ка эту тему для начала.
1
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
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 минут
а преобразование числа опять в пропись уже давали ссылку выше
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
06.07.2010, 15:28 16
результат
Миниатюры
Найти сумму двух денежных сумм заданных прописью, ответ вывести прописью  
0
Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
07.07.2010, 20:56  [ТС] 17
Попробую разобраться в этом :-)), только я не понял к чему скриншот :-(

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

Добавлено через 55 секунд
И что в этом словаре все числа описывать надо? от 0 до 999 прописью
0
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
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"}};
где будут слова: миллион миллиона миллионов тысяча итд.

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

а это словарь, я сделал чтобы легче было число переводить, но вы в своей реализации можете все подргому сделать
0
Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
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, Со фрилансом не хочу замарачиваться потому, что сам хочу все понять и изучить, а не готовое получить и сдать. :-))) это так на будующее.....
0
Эксперт GPSS
551 / 410 / 105
Регистрация: 02.07.2010
Сообщений: 1,718
12.07.2010, 11:11  [ТС] 20
Привет еще раз всем , все я сделал свое задание. Кого интересует код выложу после сессии. Делал с помощью типа string и функций стандартной библиотеки.Лично для себя считаю тему закрытой.Спасибо :-)))

 Комментарий модератора 
Все обсуждения на форуме, если хотите поделится исходниками - выкладывайте их на форум
0
12.07.2010, 11:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2010, 11:11
Помогаю со студенческими работами здесь

Дата прописью и сумма прописью
Господа, помогите!! Перерыл весь инет, скачал кучу прог и кодов но не разобрался ни в чем..(( Мне...

Сложение двух денежных сумм
#include&lt;iostream&gt; using namespace std; int main() { setlocale (0, &quot;&quot;); int pe1, sh1,...

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

Как получить сумму прописью
как в макет вывести сумму прописью Добавлено через 5 минут Сделал!!!! :yahoo:...


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

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

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