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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
SergProgC++
Эксперт GPSS
315 / 317 / 59
Регистрация: 02.07.2010
Сообщений: 1,361
#1

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

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

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

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

Сложение двух денежных сумм - C++
#include<iostream> using namespace std; int main() { setlocale (0, ""); int pe1, sh1, f1, pe2, sh2, f2; char ex; ...

Написать денежную сумму прописью - C++
Здравствуйте. Цель задачи - считать денежную сумму в рублях (неотрицательное десятичное число не превосходящее 999.99 и содержащее не более...

Вывести цифру прописью - C++
Сделайте вектор проведение десяти строк значения "ноль" , "один" , .. "девятку" . Используйте это в программе, которая преобразует цифру в...

Вывести возраст прописью - C++
Дано натуральное число N (100 ≤ N), определяющее возраст человека (в годах). Дать для этого числа наименование «год», «года» или «лет»:...

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

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

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

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

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

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

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

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

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

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

ам

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

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

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

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

Добавлено через 9 минут
А вообще, прочитай-ка эту тему для начала.
1
PointsEqual
ниначмуроФ
835 / 519 / 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 минут
а преобразование числа опять в пропись уже давали ссылку выше
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2010, 15:25
Привет! Вот еще темы с ответами:

Вывести оценку прописью - C++
Всем привет! Задачка такая - вводим с клавиатуры оценку, он нам пишет ее текстово, т.е. если ввели 5 - он пишет отлично. Нужно, чтобы...

Вывести возраст прописью - C++
Помогите решить задачку,вот условие заранее спасибо Дано целое число в диапазоне 20–69, определяющее возраст (в годах). Вывести...

Вывести число прописью - C++
Я бы тоже внес свою лепту в форумский FAQ. Есть у меня программа которая конвертирует число от 1 до 999 в прописную строку.. Не раз...

Вывести трехзначное число прописью - C++
Дано целое число в диапазоне 100–999. Вывести строку-описание данного числа, например: 256 — «двести пятьдесят шесть», 814 — «восемьсот...


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

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

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