Po co? Pytam się po co? Zamiast skupić się na poprawieniu logiki, czytelności itd zajmujesz się zbędnymi rzeczami. Jeżeli autor zadania napisał, że zakres jest taki i taki, to twój program już nic nie będzie robił [a przecież bez problemu mógłby, po wyrzuceniu zbędnych flag] dla danej np 1000000000111?. Nawet nie wypisze [na stderr] żadnego komunikatu błędu? No proszę cię! wIĘC PO CO W OGÓLE TO SPRAWDZANIE? Wybacz, wcisnął mi się CapsLock
Czemu masz, a właściwie czemu nie masz greenflag i yellowflag w swoim kodzie?
Zupełnie tego nie rozumiem 
No i twój słownik… Przecież tu wystarczy[ą] zwykła[e] tablica[e] string lub char. Np
string Jednosci [ ] = {“zero”, “jeden”, “dwa”, “trzy”,…“dziewiec”, “dziesiec”, “jedenascie”…“dziewietnascie”};
string Dziesiatki [ ] = {“zero”, “dziesiec”, “dwadziescia”…“dziewiecdziesiat”};
…
string Setki [ ] = {…}
PODSUMOWANIE
Zajmij się uproszczeniem kodu, a nie nadmiarowymi spacjami, czy sprawdzaniem wartości na wejściu. O to, czy w zadaniu są istotne nadmiarowe spacje czy nie, zawsze możesz spytać na forum, ale najczęściej nie ma to znaczenia. Po uzyskaniu AC, możesz “bawić” się w takie upiększanie i poprawianie-wygładzanie kodu. ALe najlepiej napisz program dla siebie a nie na AC, np.: tak, żeby większe od biliona liczby nie były problemem, bo nawet teraz w twoim aktualnym wcale nie są. Wystarczy napisać [skupić się] na programie wypisującym liczby maksymalnie do 999 [1000]. Potem to już tylko dodawanie tys. czy bln. i zrób to bez red, green czy innych flag ;-), tak, aby sprawdzający mógł czytając twój kod sprawdzić i literówkę i bez problemu logikę.
PS
Pod linuxem, porównując dwa pliki, można łatwo ignorować nadmiarowe spacje [lub napisać własny, taki program] np:
diff -b -B plik1 plik2 :
//narbej:~$ diff --help
Składnia: diff [OPCJA]… PLIKI
Porównanie PLIKÓW kolejnymi liniami.
Obowiązkowe argumenty długich opcji są obowiązkowe też dla krótkich.
–normal wynik w postaci zwykłego diff-a (domyślnie)
-q --brief wypisanie wyniku tylko gdy pliki się różnią
-s --report-identical-files informowanie gdy dwa pliki są takie same
-c, -C NUM, --context[=ILE] wypisanie ILU (domyślnie 3) linii kontekstu
–u, -U ILE, --unified=ILE wypisanie najwyżej ILE (domyślnie 3)
linii kontekstu w trybie unified
-e --ed wynik w postaci poleceń ed-a
-n --rcs wynik w postaci diff-a z RCS
-y, --side-by-side wyniki w dwóch kolumnach
-W, --width=ILE wypisanie najwyżej ILE (domyślnie 130) kolumn
–left-column wypisanie tylko lewej kolumny dla wspólnych linii
–suppress-common-lines bez wypisania wspólnych linii
-p, --show-c-function podanie w jakiej funkcji C są zmiany
-F, --show-function-line=WYRREG wypisanie ostatniej linii pasującej do WYRREG
–label ETYKIETA użycie ETYKIETY zamiast nazwy pliku
(może być powtarzane)
-t --expand-tabs rozwinięcie TAB-ów w spacje w wyniku
-T --initial-tab wyrównanie linii przez użycie TAB-ów
–tabsize=ILE TAB-y co ILE (domyślnie 8) kolumn
–suppress-blank-empty bez wypisywania spacji i znaków TAB przed
pustymi liniami
-I --paginate przepuszczenie wyniku przez `pr’ żeby go stronnicować
-r --recursive porównanie podkatalogów rekurencyjnie
-N --new-file traktowanie brakujących plików jak pustych
–unidirectional-new-file traktowanie brakujących pierwszych plików
w pierwszym zestawie jako pustych
–ignore-space-change zignorowanie wielkości liter przy
porównywaniu nazw plików
–no-ignore-file-name-case uwzględnianie wielkości liter przy
porównywaniu nazw plików
-x, --exclude=WZÓR wykluczenie plików pasujących do WZORU
-X, --exclude-from=PLIK pominięcie plików pasujących do wzorców w PLIKU
-S, --starting-file=PLIK zacznij od PLIKU przy porównywaniu katalogów
–from-file=PLIK1 porównanie PLIKU1 z wszystkimi
argumentami; PLIK1 może być katalogiem
–to-file=PLIK2 porównanie wszystkich argumentów
z PLIKIEM2; PLIK2 może być katalogiem
-i --ignore-case ignorowanie różnic między wielkimi i małymi literami
-E --ignore-tab-expansion zignorowanie zmian spowodowanych
rozwinięciem TAB-ów
-Z, --ignore-trailing-space ignore white space at line end
-b --ignore-space-change Zignorowanie zmian ilości znaków odstępu
-w --ignore-all-space zignorowanie znaków odstępu
-B --ignore-blank-lines zignorowanie zmian liczby pustych linii
-I, --ignore-matching-lines=RE zignorowanie zmian w liniach pasujących
do RE
-a --text traktowanie plików jako tekstowych
–strip-trailing-cr pominięcie znaków nowej linii na wejściu
-D, --ifdef=NAZWA wypisanie połączonego pliku dla pokazania
różnic w #ifdef NAZWA' --GTYPE-group-format=FMTG użyciem FMTF do sformatowania grup wejściowych typu GTYPE --line-format=LFMT podobnie, ale z użyciem LFMT do sformatowania linii wejściowych --LTYPE-line-format=FMTL użycie FMTL do sformatowania linii wejściowych typu LTYPE Te opcje formatowania dają dokładną kontrolę nad wynikami diff-a, są uogólnieniem -D/--ifdef. TYPL to
old’, new' albo
unchanged’. TYPG to TYPL albo `changed’.
(Tylko) FMTG może zawierać:
%< linie z PLIKU1
%> linie z PLIKU2
%= linie wspólne dla PLIKU1 i PLIKU2
%[-][SZER][.[DOKŁ]]{doxX}LITERA specyfikacja w stylu printf dla LITERY
LITERY są następujące dla nowej grupy (małe dla starej grupy):
F numer pierwszej linii
L numer ostatniej linii
N ilość linii = L-F+1
E F-1
M L+1 %(A=B?T:E) jeżeli A równa się B, to T, jeżeli nie, to E
(Tylko) LFMT może zawierać:
%L zawartość linii
%l zawartość linii z wyłączeniem znaku nowej linii
%[-][SZER][.[DOKŁ]]{doxX}n specyfikację numeru linii w stylu printf
Zarówno FMTG jak FMTL mogą zawierać:
%% %
%c’Z’ pojedynczy znak Z
%c’\OOO’ znak o kodzie ósemkowym OOO Z znak Z (inne znaki reprezentują same siebie)
-d --minimal usiłowanie znalezienia mniejszego zbioru zmian
–horizon-lines=ILE zostawienie ILE linii wspólnego przedrostka i przyrostka
–speed-large-files założenie: duże pliki i rozrzucone małe zmiany
--help wypisanie tej pomocy i zakończenie
-v --version wypisanie informacji o wersji i zakończenie
PLIKI to PLIK1 PLIK2' albo
KATALOG1 KATALOG2’ albo KATALOG PLIK...' albo PLIK... KATALOG'. Jeżeli użyta jest opcja --from-file albo --to-file, nie ma ograniczeń co do PLIKU/ÓW. Jeżeli PLIK to
-’, czytane jest standardowe wejście.
Status wyjściowy ma wartość 0 gdy pliki wejściowe są takie same, 1 - jeżeli
różne, 2 - jeżeli są problemy.
O błędach programu poinformuj bug-diffutils@gnu.org
O błędach tłumaczenia poinformuj translation-team-pl@lists.sourceforge.net
strona domowa GNU diffutils: http://www.gnu.org/software/diffutils/
Pomoc w używaniu oprogramowania GNU: http://www.gnu.org/gethelp/
knoppix@Microknoppix:~$
Ale gotowych do użycia, programów porównujących, pod linuxem jest dużo więcej.