Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[C++] Liczba na słowo

#1
[C++] Liczba na słowo
Witam, mam takie pytanie do Was. Gdzie zrobiłem błąd w tym programie. Program ma zamieniać liczbę na tekst, liczba z zakresu 0 do 10e12. Błąd występuje wtedy gdy wpisze np. liczbę 2000001000 wyświetla "dwa mld. jeden" a powinno być "dwa mld. jeden tysiąc". To samo jest z 2001000000. Drugi rodzaj błędu to taki, że jak wpisze 3000000000 i każdą wyższą to wypisuje "osiem"
Z góry dzięki za pomoc.
Kod:
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;


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


  string LiczNaSlow(long liczba)
    {        
        string slownie = " ";
    int koncowka;
        int rzad = 0;
        int j = 0;
        

        

        if (liczba<0)
                {
                slownie=" Blad! Podaj liczbe z zakresu 0 do 10e12";
                
                }

        if (liczba==0) slownie="zero";

        while (liczba>0)
                {
                koncowka=(liczba%10);
                liczba/=10;
                if ((j==0)&&(liczba%100!=0 || liczba<100)) slownie = x[rzad] + slownie;
                if ((j==0)&&(liczba%10!=1)) slownie = jednosci[koncowka] + slownie;
                if ((j==0)&&(liczba%10==1))
                        {
                        slownie = nascie[koncowka] + slownie;
                        liczba/=10;
                        j+=2;
                        continue;
                        }
                if (j==1) slownie = dziesiatki[koncowka] + slownie;
                if (j==2)
                        {
                        slownie = setki[koncowka] + slownie;
                        j=-1;
                        rzad++;
                        }
                j++;
                }

        return slownie;
        
       }
      
    
int main() {  
    
   long licz;
   cout << ("Wprowadz liczbe w postaci cyfr: ");
   cin >> licz;
   cout << endl << ("Liczba w postaci slownej to: ") << LiczNaSlow(licz) << endl << endl;
        
   system("pause");
}
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: [C++] Liczba na słowo
Niestety to nie jest kwestia "gdzie zrobilem blad, moze to jakis czeski blad"
Ogolnie masz walniety algorytm....przeanalizuj dokladnie co twoja funkcja "string LiczNaSlow(long liczba)" zrobi gdy zobaczy liczbe "3000000000", lub
"2001000" (wystarczy 2001000, nie mecz sie narazie z analizowaniem 2000001000).
 System operacyjny: windows_2000 Przeglądarka: ie
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
c++ liczba na słowoliczba na słowo c++c++ program prezentujacy liczbe slownie

Podobne wątki ([C++] Liczba na słowo)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  liczba cyfr w liczbie ser-x7 2 7218 01.03.2016, 01:15
Ostatni post: ser-x7
  liczba wątków obsługiwanych przez procesor dawid0292 3 3381 08.11.2013, 20:18
Ostatni post: dawid0292
  c++ zamiana liczby na słowo marti564 2 4137 16.10.2013, 17:18
Ostatni post: marti564

Skocz do:


Wybrane wątki ([C++] Liczba na słowo)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Sumowanie czasu excel. Cixi 7 7107 13.02.2018 11:52
Ostatni post: Cixi
  Sap i power bi książki Cixi 1 6998 09.02.2018 21:46
Ostatni post: Cixi
  Pomoc w VBA excel Woof 3 7580 19.01.2018 09:36
Ostatni post: Woof
Ściana [CMD] Dwa zadanka które mnie przerosły MihuJ 0 6900 11.01.2018 15:52
Ostatni post: MihuJ
  Czy programowanie jest dla mnie? Co powinienem robić? Kumiku 2 7611 05.01.2018 20:14
Ostatni post: broda99
  SQL zapisanie w rekordzie nazwy zalogowanego użytkownika karlos1323 11 2943 30.12.2017 11:08
Ostatni post: koneton
  Mały algorytm bartek164 3 7648 25.12.2017 10:41
Ostatni post: Szachista
  Git - kompilacja pobranej apki ~Anonim 6 7434 23.12.2017 14:59
Ostatni post: ~Anonim
  wczytywanie zmiennej z innego pliku batch grymariusza 7 8216 18.12.2017 17:34
Ostatni post: broda99
  Jaki kod pod takie okno formularza w visualbasicu 2010? aktywny27 11 17628 26.11.2017 23:26
Ostatni post: Ajgor
  Jaki projekt na pythona bartek164 0 7323 25.11.2017 19:59
Ostatni post: bartek164
  [VB.NET] przenoszenie danych między formami Pioro 15 18218 19.11.2017 03:48
Ostatni post: broda99
  Java.android.Tworzenie akcji Blendow 0 7216 16.11.2017 23:38
Ostatni post: Blendow
  Proszę o pomoc, cmd! PanKasztan4 1 6665 16.11.2017 22:05
Ostatni post: broda99
  Jaki kod w visual basicu 2010 express? aktywny27 5 7845 07.11.2017 11:01
Ostatni post: Ajgor