O programa a seguir pede ao usuário que coloque um número de 0 a 999, escrevendo-o por extenso.
#include <stdio.h> #include <string.h> #include <stdlib.h> // Variaveis globais char *unidades[] = {"zero","um","dois","tres","quatro","cinco","seis","sete","oito","nove"}; char *dezVinte[] = {"","onze","doze","treze","quatorze","quinze","dezesseis","dezessete","dezoito","dezenove"}; char *dezenas[] = {"","dez","vinte", "trinta","quarenta","cinquenta","sessenta","setenta,","oitenta","noventa"}; char *centenas[] = {"","cento","duzentos","trezentos","quatrocentos","quinhentos","seiscentos","setecentos","oitocentos","novecentos"}; char *appendStr(char *str1, char *str2) { int a,b,f; char *app; a=strlen(str1); b=strlen(str2); app=(char *)malloc(a+b+1); app[a+b+1]=13; for (f=0; f<a+b; f++) { if (f<a) app[f]=str1[f]; else app[f]=str2[f-a]; } return app; } char *findName(int num) { char *e = " e "; char *nome; int c,d,dv,u; c=num/100; d=num/10-c*10; u=num-(num/10)*10; dv=d*10+u; nome=unidades[u]; if (num<10) return nome; // Onze a dezenove if ((dv>10) && (dv<20)) nome=dezVinte[dv-10]; else { if (u==0) nome=dezenas[d]; else { nome=appendStr(e,nome); nome=appendStr(dezenas[d],nome); } } if (num<100) return nome; // Inteiro if ((d==0)&&(u==0)) { if (c==1) nome="cem"; else nome=centenas[c]; } else { nome=appendStr(e,nome); nome=appendStr(centenas[c],nome); } return nome; } int main(void) { // Variaveis int numero; char *nomeNum; printf("Entre com um numero 0-999: "); scanf("%d",&numero); if ((numero<0) || (numero>999)) { printf("Valor fora da faixa!\n"); return 0; } nomeNum=findName(numero); printf("Numero %d: %s\n",numero,nomeNum); return 0; }
<< Anterior | Linguagem C | Próxima >> |