Liczba w postaci slownej

19Radek88
Użytkownik
Użytkownik
Posty: 105
Rejestracja: 2 lis 2007, o 21:01
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 14 razy
Pomógł: 4 razy

Liczba w postaci slownej

Post autor: 19Radek88 »

Hejka,

Czy ma ktos z Was moze 'pod reka' jakis programik przedstawiajacy liczbe rzeczywista - a konkretnie cenę - w postaci słownej np.

dla 25.99 --> dwa * piec *ZL* dziewiec * dziewiec *GR*
dla 122.00 --> jeden * dwa * dwa *ZL* zero * zero *GR*

i tak dalej...


Jesli tak, prosilbym o wklejenie kodu.
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

Liczba w postaci slownej

Post autor: matshadow »

To program który pobiera liczbę całkowitą w postaci bardziej słownej niż chcesz. Użyj funkcji modf do liczby double (float), chcesz to pogrzeb w tablicach, dopisz pare linijek i masz program

Kod: Zaznacz cały

#include <iostream>
using namespace std;

string jednosci[] = {"", " jeden", " dwa", " trzy", " cztery", " piec", " szesc", " siedem", " osiem", " dziewiec"};
string nascie[] = {"dziesiec", " jedenascie", " dwanascie", " trzynascie", " czternascie", " pietnascie", " szesnascie", " siedemnascie", " osiemnascie", " dziewietnascie"};
string dziesiatki[] ={"", " dziesiec", " dwadziescia", " trzydziesci", " czterdziesci", " piecdziesiat", " szescdziesiat", " siedemdziesiat", " osiemdziesiat", " dziewiecdziesiat"};
string setki[] = {"", " sto", " dwiescie", " trzysta", " czterysta", " piecset", " szescset", " siedemset", " osiemset", " dziewiecset"};
string x[] = {"", " tys.", " mln.", " mld.", " bln.", " bld."};

main()
{
    int t,n;
    long long liczba;
    cin>>t;
    while(t--)
    {
        int koncowka;
        int rzad = 0;
        int j = 0;
        int minus = 0;
        cin>>liczba;
        string slownie = "";
        if (liczba==0) slownie="zero";
        while (liczba>0)
        {
            koncowka=(liczba%10);
            liczba/=10;
            if ((j==0)&&(liczba%100!=0 || liczba<100)) slownie.insert(0,x[rzad]);
            if ((j==0)&&(liczba%10!=1)) slownie.insert(0,jednosci[koncowka]);
            if ((j==0)&&(liczba%10==1))
            {
                slownie.insert(0,nascie[koncowka]);
                liczba/=10;
                j+=2;
                continue;
            }
            if (j==1) slownie.insert(0,dziesiatki[koncowka]);
            if (j==2)
            {
                slownie.insert(0,setki[koncowka]);
                j=-1;
                rzad++;
            }
            j++;
        }
        cout<<slownie<<endl;
    }
}
ODPOWIEDZ