liczba dwucyfrowa C

0

Cześć mam do napisania taki program który pyta użytkownika o liczbę dwucyfrową a następnie wypisuje tę liczbę słownie. Program ma być zrobiony za pomocą instrukcji switch. Podzieliłem liczbę dwucyfrową na dwie cyfry żeby było łatwiej. I mam problem z liczbami z zakresu 11-19.

#include <stdio.h>
	int main(void){
	int liczba1,liczba2;
	printf("Podaj dwucyfrowa liczbe: ");
	scanf("%d%d", &liczba1,&liczba2);
	switch(liczba1){
	case 1:printf("jeden");break;
	case 2:printf("dwadziescia");break;
	case 3:printf("trzydziesci");break;
	case 4:printf("czterdziesci");break;
	case 5:printf("piecdziesiat");break;
	case 6:printf("szczesdziesiat");break;
	case 7:printf("siedemdziesiat");break;
	case 8:printf("osiemdziesiat");break;
	case 9:printf("dziewiecdziesiat");break;
	case 11:printf("jedenascie");break;
	case 12:printf("dwaenascie");break;
	case 13:printf("trzynascie");break;
	case 14:printf("czternascie");break;
	case 15:printf("pietnascie");break;
	case 16:printf("szesnascie");break;
	case 17:printf("siedemnascie");break;
	case 18:printf("osiemnascie");break;
	case 19:printf("dziewietnascie");break;		
	}
	if(liczba2>0&&liczba2<19){
	switch(liczba2){
	case 1:printf("jeden");break;
	case 2:printf("dwa");break;
	case 3:printf("trzy");break;
	case 4:printf("cztery");break;
	case 5:printf("piec");break;
	case 6:printf("szesc");break;
	case 7:printf("siedem");break;
	case 8:printf("osiem");break;
	case 9:printf("dziewiec");break;
	}}
	while(1);
	return 0;
}	
 
2

Na początek: http://format.krzaq.cc

while(1);

To powoduje, że program nigdy nie zakończy działania.

scanf("%d%d", &liczba1,&liczba2);

To jest wczytanie 2 liczb a nie cyfr. Czyli jak na wejściu będzie jakaś liczba, to zostanie ona w całości wczytana do liczba1.

0

while (1); używam dla kompilatora bo takto nie widzę programu bo tak szybko się wykonuje że tylko mignie mi obraz i nie zdążę zauważyć dlatego to daję.Trzeba podzielić liczbę na cyfry Czyli jak wg. Cb powinienem to wczytać?

1

Zmień IDE na takie, które samo Ci zatrzyma konsolę.

No i nie rozumiem po co chcesz to dzielić na cyfry. Przecież masz już wszystko napisane. Wczytujesz liczbę do liczba1 i masz sprawdzenie co to za liczba.

1

while(1);

Tak naprawdę nie można.

To NIE JEST spauzowanie programu tak, byś zdążył odczytać wynik przed zamknięciem się okienka konsoli.

To jest pętla nieskończona: komputer w nieskończoność przerabia tę jedną jedyną instrukcję. Zdajesz sobie sprawę, że w ten sposób procesor Ci chodzi na 100% po próżnicy? (ściślej, jedno jądro procesora, ale mimo wszystko). Taki program, gdyby był nie tylko ćwiczebny, ale gdyby miał mieć realne zastosowania, mógłby narobić naprawdę sporo szkód.

To już lepiej zamiast tego while(1); pisz system("PAUSE"); To też nie jest eleganckie, ale jest o niebo lepsze od while(1). Do system("PAUSE"); możesz musieć dołączyć bibliotekę stdlib.h. Czyli, na samej górze piszesz jeszcze #include <stdlib.h>.

1

Co do dzielenia liczby na cyfry:

Jak masz np. w zmiennej o nazwie liczba typu int liczbę dwucyfrową 14 lub 85, to:
liczba / 10 – dzielenie automatycznie zaokrągli wynik w dół – czyli dokładnie zwróci cyfrę dziesiątek.
liczba % 10 – reszta z dzielenia przez 10 – zwróci cyfrę jedności.

I nie musisz w ten sposób wczytywać każdej cyfry osobno, wczytujesz po prostu liczbę dwucyfrową.

1

Dla porównanie masz tutaj mój kod napisany w kilka minut. Wiem, że nie powinien ci dawać kodu, ale może nauczy cię jak operować na tablicach.

#include <iostream>

using namespace std;

int main()
{
    int liczba;

    cout << "Podaj liczbę dwucyfrową : ";
    cin >> liczba;

    int jednostki = liczba % 10;
    int dziesiatki = liczba / 10;

    string jed[10] = {"", "jeden", "dwa", "trzy", "cztery", "piec", "szesc", "siedem", "osiem", "dziewiec" };
    string dzi[10] = {"", "dziesiec", "dwadziescia", "trzydziesci", "czterdziesci", "piedziesiat", "szescdziesiat", "siedemdziesiat", "osiemdziesiat", "dziewiecdziesiat" };
    string inne[10] = {"", "jedenascie", "dwanascie", "trzynascie", "czternascie", "piatnascie", "szesnascie", "siedemnascie", "osiemnascie", "dziewietnascie" };

    if(liczba == 10)
        cout << dzi[1];
    else if(liczba > 19 && liczba < 100)
        cout << dzi[dziesiatki] << jed[jednostki];
    else if(liczba < 10 || liczba > 99)
        cout << "Ta liczba nie jest dwucyfrowa";
    else
        cout << inne[jednostki];

    cout << "\nJednostki : " << jednostki << " dziesiątki : " << dziesiatki;

    return 0;
}

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