zamiana kwoty na słowa - błagam pomocy :(

0

Witam potrzebuję pomocy z ukończeniem programu. Muszę zrobić program zamieniający kwotę na słowną do 10milionów zakres.
Zrobiłem tyle i już więcej nie potrafię, męczyłem się kilkanaście godzin i nic. Tutaj nadal mam błędy. Czy mógłby ktoś pomóc mi z tym?
To mój pierwszy post i dopiero zaczynam z programowaniem.

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>

int main()
{
	int c0, c1, c2, c3, c4;
	int x,k;
	do
	{
		printf ("\n Podaj x, x<1000:");
		k=scanf("%u", &x);
		if(k==0) printf("\n Blad formatu");
		if (k==1 && x>99999)
		printf("\n zbyt duze wartosci x");
		fflush(stdin);
		
	}
	
	while (k==0 || x>99999);
	
	c4=x/10000;
	x=x-c4*10000;
	c3=x/1000;
	x=x-c3*1000;
	c2=x/100;
	x=x-c2*100;
	c1=x/10;
	c0=x-c1*10;
	
	

switch (c4)
{
	case 1: switch (c3)
	{
	case 0: printf("jeden ");
	break;
	case 1: printf("dwa ");
	break;
	case 2: printf("trzy ");
	break;
	case 3: printf("cztery ");
	break;
	case 4: printf("piec ");
	break;
	case 5: printf("szesc ");
	break;
	case 6: printf("siedem ");
	break;
	case 7: printf("osiem ");
	break;
	case 8: printf("dziewiec ");
		case 9: printf ("dziesiec ");
		break;
		case 10: printf ("jedenascie ");
		break;
		case 11: printf ("dwanascie ");
		break;
		case 12: printf ("trzynascie ");
		break;
		case 13: printf ("czternascie ");
		break;
		case 14: printf ("pietnascie ");
		break;
		case 15: printf ("szesnascie ");
		break;
		case 16: printf ("siedemnascie ");
		break;
		case 17: printf ("osiemnascie ");
		break;
		case 18: printf ("dziewietnascie ");
		break;
	}
	break;
	case 2: printf("dwadziescia ");
	break;
	case 3: printf("trzydziesci ");
	break;
	case 4: printf("czterdziesci ");
	break;
	case 5: printf("piecdziesiat ");
	break;
	case 6: printf("szescdziesiat ");
	break;	
	case 7: printf("siedemdziesiat ");
	break;	
	case 8: printf("osiemdziesiat ");
	break;	
	case 9: printf("dziewiecdziesiat ");
	break;	
}

	if (c3==1) printf("tysiac ");
	if (c3>1 && c3<5) printf(" tysiace ");
	if (c3>=5) printf (" tysiecy ");
switch (c2)
{
	case 1: printf("sto ");
	break;
	case 2: printf("dwiescie ");
	break;
	case 3: printf("trzysta ");
	break;
	case 4: printf("czterysta ");
	break;
	case 5: printf("piecset ");
	break;
	case 6: printf("szescset ");
	break;
	case 7: printf("siedemset ");
	break;
	case 8: printf("osiemset");
	break;
	case 9: printf("dziewiecset");
	break;
}
switch (c1)
{
	case 1: switch (c0)
	{
		case 0: printf ("dziesiec");
		break;
		case 1: printf ("jedenascie");
		break;
		case 2: printf ("dwanascie");
		break;
		case 3: printf ("trzynascie");
		break;
		case 4: printf ("czternascie");
		break;
		case 5: printf ("pietnascie");
		break;
		case 6: printf ("szesnascie");
		break;
		case 7: printf ("siedemnascie");
		break;
		case 8: printf ("osiemnascie");
		break;
		case 9: printf ("dziewietnascie");
		break;
	}
	break;
	case 2: printf("dwadziescia");
	break;
	case 3: printf("trzydziesci");
	break;
	case 4: printf("czterdziesci");
	break;
	case 5: printf("piecdziesiat");
	break;
	case 6: printf("szescdziesiat");
	break;	
	case 7: printf("siedemdziesiat");
	break;	
	case 8: printf("osiemdziesiat");
	break;	
	case 9: printf("dziewiecdziesiat");
	break;	
}
}

0

Skoro chcesz to zrobić w switchu to może rzuć okiem na Program piszący kwotę słownie

3

Napiszę to co zwykle w takich wypadkach (jak zdarta płyta):
Cały problem polega na tym, że napisałeś wszystko w main. Jeśli podzielisz problem na mniejsze części opisane małymi funkcjami, to się okaże, że to nie jest trudne.
I jeszcze zamiast używać switch umieść napisy w tablicy i posługuj się indeksami, to też bardzo uprości problem.
Zauważ też, że trójki cyfr: miliony, tysiące, i do tysiąca zachowują się tak samo, różnią się tylko sufixem lub jego brakiem, więc pewien kod można wykorzystać wielokrotnie (po to są mniejsze funkcje).

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