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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ не работает частично http://www.cyberforum.ru/cpp-beginners/thread151103.html
вот исходник: #include "stdafx.h" #include <iostream> #include <math.h> #include <stdio.h> #include <stdlib.h> using namespace std; int _tmain(int argc, _TCHAR* argv)
C++ Создать функцию Даны две строки символов, которые состоят из слов, между которыми, – пробили. Создать функцию, которая печатает найдовше слово двух строк. http://www.cyberforum.ru/cpp-beginners/thread151086.html
C++ Текстовые файлы
Помогите пожалуйста с программой. Она должна выводить все числа встеченные в программе (числом считать только те которые состоят только из цифр). Например из wfwef, 2312 wfew we443 wfwqdqaf 9980...
C++ C++
Подскажите где можно скачать саму програму С++.
C++ Visual Studio 2010 Express http://www.cyberforum.ru/cpp-beginners/thread151043.html
Скачал, поставил, приятный такой дизайн. А как она по функциональности? Чем лучше VS 2005, 2008? Ну и впринципе удобно ли в ней работать?
C++ Как обьединять программы Люди подскажите как в си можно сделать ссылку на другой скрипт, чтоб он его обработал и вернулся обратно к предыдущей??? подробнее

Показать сообщение отдельно
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.07.2010, 15:25
задачка интересная.
написал небольшую функцию для чисел от 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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru