Pomoc przy programie słownie wypisującym liczby.

0

Chcę was przeprosić za nazwy zmiennych starałem się żeby były przejrzyste ale wyszło całkowicie na odwrót patrząc na kod można dostać oczopląsu nie będę już tego poprawiał bo jutro idę do pracy na cały dzien a na weekend potrzebuje by zadanie było zrobione. Ehh nie wiem jak inni rozwiązali te zadanie ale na pewno nie tak jak ja. Kod wydrukuje to co miałem w zamyśle plus coś od siebie zależnie od liczby jaką wybiorę problem najczęściej przy drukowaniu 3 cyfrowych. Problem chyba leży w ifach może w warunkach . Z resztą problemów postaram sobie poradzić

int main()

{
    char *Jednostki[]={"","jeden ","dwa ","trzy ","cztery ","piec","szesc","siedem","osiem","dziewiec ",
"dziesiec ","jedenascie ","dwanascie","trzynascie","czternascie","piętnascie","szesnascie","siedemnascie",
"osiemnascie","dziewietnascie "};

char *Dziesiatki[]={"","dwadziescia ","trzydziesci ","czterdziesci","piecdziesiat","szescdziesiat","siedemdziesiat",
"osiemdziesiat ","dziewiecdziesiat "};

char *Setki[]={"","Sto ","dwiescie ","trzysta ","czterysta ",
"piecset ","szescet","siedemset","osiemset ","dziewiecset "};

    int liczbaUzytkownika;
    int obliczeniaDziesiatki;
    int obliczeniaDziesiatki1;
    int moduloLiczbauzytkownikaDziesiatki;
    int dzielenieLiczbaUzytkownikaSetki;
    int moduloSetki;
    int dzieleniePrzezDziesiec;
    int dzielenieDlaJednosciwSetkach;


    cout <<"Podaj liczbe: "<<endl;
    cin >> liczbaUzytkownika;

    obliczeniaDziesiatki1=liczbaUzytkownika/10;
    obliczeniaDziesiatki= obliczeniaDziesiatki1%=10;
    moduloLiczbauzytkownikaDziesiatki=liczbaUzytkownika%10;

    dzielenieLiczbaUzytkownikaSetki=liczbaUzytkownika/100;
    dzieleniePrzezDziesiec=liczbaUzytkownika/10;



    if (liczbaUzytkownika<=19) {
        cout <<Jednostki[liczbaUzytkownika];
    }
    if(liczbaUzytkownika>=100)
    {

    cout << Setki[dzielenieLiczbaUzytkownikaSetki]<<Dziesiatki[obliczeniaDziesiatki-1]<<Jednostki[moduloLiczbauzytkownikaDziesiatki];

    }

    if(19>liczbaUzytkownika<=99){
     cout << Dziesiatki[obliczeniaDziesiatki-1]<<Jednostki[moduloLiczbauzytkownikaDziesiatki];
    }


    return 0;
}


1

Uwagi do słownictwa: jeżeli to na studia, to lepiej albo usuń "ę" w "piętnascie", albo wszędzie daj polskie znaki. Poza tym "szescet" --> "szescset".

1
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;


int main()

{
    char *Jednostki[]={"","jeden ","dwa ","trzy ","cztery ","piec","szesc","siedem","osiem","dziewiec ",
"dziesiec ","jedenascie ","dwanascie","trzynascie","czternascie","piętnascie","szesnascie","siedemnascie",
"osiemnascie","dziewietnascie "};

char *Dziesiatki[]={"","","dwadziescia ","trzydziesci ","czterdziesci","piecdziesiat","szescdziesiat","siedemdziesiat",
"osiemdziesiat ","dziewiecdziesiat "};

char *Setki[]={"","Sto ","dwiescie ","trzysta ","czterysta ",
"piecset ","szescet","siedemset","osiemset ","dziewiecset "};

    int num;
    int liczbaUzytkownika;
    int obliczeniaDziesiatki;
    int obliczeniaDziesiatki1;
    int moduloLiczbauzytkownikaDziesiatki;
    int dzielenieLiczbaUzytkownikaSetki;
    int moduloSetki;
    int dzieleniePrzezDziesiec;
    int dzielenieDlaJednosciwSetkach;
    char bufor[140]={};


    cout <<"Podaj liczbe: "<<endl;
    cin >> liczbaUzytkownika;

    if (liczbaUzytkownika <= 19) {num=1;}
   else if (20<=liczbaUzytkownika&&liczbaUzytkownika <=99) {num=2;}
   else if (100<=liczbaUzytkownika&&liczbaUzytkownika <= 999) {num=3;}


    obliczeniaDziesiatki1=liczbaUzytkownika/10;
    obliczeniaDziesiatki= obliczeniaDziesiatki1%=10;
    moduloLiczbauzytkownikaDziesiatki=liczbaUzytkownika%10;

    dzielenieLiczbaUzytkownikaSetki=liczbaUzytkownika/100;
    dzieleniePrzezDziesiec=liczbaUzytkownika/10;
      switch (num){
   case 1:
       strcat(bufor,Jednostki[liczbaUzytkownika]);
    cout <<bufor;
    break;
   case 2:
      strcat(bufor,Dziesiatki[obliczeniaDziesiatki]);
      strcat(bufor,Jednostki[moduloLiczbauzytkownikaDziesiatki]);
   cout <<bufor;
   break;
   case 3:
       strcat(bufor,Setki[dzielenieLiczbaUzytkownikaSetki]);
       strcat(bufor,Dziesiatki[obliczeniaDziesiatki]);
       strcat(bufor,Jednostki[moduloLiczbauzytkownikaDziesiatki]);
    cout <<bufor;
    break;
      }

    return 0;
}

Udało się! :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1