sábado, 30 de março de 2013

Programa Números Cardinais

Os algarismos arábicos ou árabes, foram trazidos da Índia para o Ocidente há muitos séculos atrás e são aqueles que ainda usamos nos nossos dias.
Os números que escrevemos são formados pelos algarismos 0,1,2,3,4,5,6,7,8 e 9.
cardinal: indica quantidade determinada de seres, de objetos, de animais e etc.
Se for do seu interesse saber mais sobre os números, pesquie na internet
e encontrará milhares de links falando sobre o assunto.

Aproveitando esta véspera de feriado, e o tempo que me sobrou, comecei
a criar este programa, e coloquei o nome de: "PROGRAMA NUMEROS CARDINAIS". O Programa converte números arábicos em cardinais, de 1 a 9999.

Breve resumo do funcionamento:

O programa começa pedindo para que se digite um número, é claro, más existem parâmetros estabelecidos, quanto ao uso destes numeros, porque se você digitar um número negativo que não seja -1, você receberá a seguinte mensagem:

"O Numero não Pode Ser Negativo
Nem Maior que 10000"

Se você digitar um número acma de 9999, a mensagem de retorno é a mesma, e o programa volta ao seu curso normal aguardando que se digite um número válido.
Se você digitar o número negativo -1, o programa se encerra com o meu apelido agradecendo o uso.
Se você digitar um caractere qualquer, que não seja um número, o programa lhe retorna um bipe e a seginte mensagem:

"Isso não e um numero Valido !"

E retorna ao ponto de partida.

Os números digitados são colhidos pela função gets(); e armazenados no vetor de char num [10]; Más logo são convertidos em inteiros graças a função atoi.
Para não ter que escrever muito, deixando tópico muito extenso, escrevo agora sobre a parte mais importante do código, que é a lógica
principal onde na verdade os números são formatados, divididos e separados por milhar, centena, dezena e unidade, isto é fundamental e foi aonde apanhei para deixá-lo funcionando.
Note que eu não usei ponteiros e nem matrizes e nem switch (case); para escolha e para armazenameto dos números na memória, se tivesse feito assim com certeza o programa teria ficado bem mais portátil, más preferi este método porque o programa é indicado a iniciantes em linguagem C.
Na verdade usei uma corrente de ifs e else, que é fácil
de usar e imprementar, e o funcionamento é Perfeito.

Segue o código abaixo:


Código:
#include <stdio.h>
#include <conio.h>
int Cardinais ( char num [4] ){
 int i;
 for( i = 0; i < strlen ( num ); i++ ){
  if ( num [ i ] < '0' || num [ i ] > '9' )
   return 0;
 }
 return 1;
}
int main(){
 system ("title PROGRAMA NUMEROS CARDINAIS");
 //textbackground(BRANCO);
 int a, e, i, o, q, n, milhar, centena, dezena, unidade;
 char num [10];
 int erro = 0;
 do{
  system("cls");
  textcolor(VERMELHOCLARO);gotoxy(29,3);printf("PROGRAMA NUMEROS CARDINAIS");
  textcolor(AMARELO);gotoxy(24,5);printf("Programa desenvolvido por:");
  textcolor(CIANOCLARO);gotoxy(51,5);printf("Samuel Lima");
  textcolor(VERDECLARO);gotoxy(34,7);printf("sa_sp10@hotmail.com");
  textcolor(AZULCLARO);gotoxy(34,9);printf("Digite um numero: ");
  gets(num);
  n =  atoi (num);
  if(n == -1){
   textcolor(VERMELHOCLARO);gotoxy(33,20);printf ("O ROCCO AGRADECE");Sleep(1800);exit(0);
  }
  while (n < 0 || n > 9999 ){
   textcolor(VERMELHOCLARO);gotoxy(25,11);printf("\aO Numero não Pode Ser Negativo");
   textcolor(VERMELHOCLARO);gotoxy(25,12);printf("Nem Maior que 10000");
   Sleep (2800);    main();
  }
  if ( Cardinais ( num ) == 0 ){
   textcolor(AZULCLARO);gotoxy(34,13); printf("\aIsso não e um numero Valido !\n");
   gotoxy(54,13);
  }  else erro = 0;
  textcolor(VERDECLARO);gotoxy(34,11); printf("voce digitou: %s",num);
  gotoxy(34,13);
  milhar = n / 1000;
  centena = n / 100;
  n = n - centena * 100;
  dezena = n / 10;
  unidade = n % 10;
  a = dezena * 10;
  e = unidade * 1;
  q = dezena * 10 + e;
  o = milhar * 1000;
  i =  centena  * 100 - o;
  textcolor(AMARELO);gotoxy(34,15); if ( o == 9000) {
   if(dezena == 0 && unidade == 0){
    printf("Nove Mil ");}
   else{
    printf("Nove Mil e ");}
  }
  if ( o == 8000) {
   if(dezena == 0 && unidade == 0){
    printf("Oito Mil ");}
   else
    printf("Oito Mil e ");
  }
  if ( o == 7000) {
   if(dezena == 0 && unidade == 0){
    printf("Sete Mil ");}
   else
    printf("Sete Mil e ");
  }
  if ( o == 6000) {
   if(dezena == 0 && unidade == 0){
    printf("Seis Mil ");}
   else
    printf("Seis Mil e ");
  }
  if ( o == 5000) {
   if(dezena == 0 && unidade == 0){
    printf("Cinco Mil ");}
   else
    printf("Cinco Mil e ");
  }
  if ( o == 4000) {
   if(dezena == 0 && unidade == 0){
    printf("Quatro Mil ");}
   else
    printf("Quatro Mil e ");
  }
  if ( o == 3000) {
   if(dezena == 0 && unidade == 0){
    printf("Tres Mil ");}
   else
    printf("Tres Mil e ");
  }
  if ( o == 2000) {
   if(dezena == 0 && unidade == 0){
    printf("Dois Mil ");}
   else
    printf("Dois Mil e ");
  }
  if ( o == 1000) {
   if(dezena == 0 && unidade == 0){
    printf("Mil ");}
   else
    printf("Mil e ");
  }
  if ( i == 900) {
   if(dezena == 0 && unidade == 0){
    printf("Novecentos");}
   else
    printf("Novecentos e ");
  }
  if ( i == 800) {
   if(dezena == 0 && unidade == 0){
    printf("Oitocentos");}
   else
    printf("oitocentos e ");
  }
  if ( i == 700) {
   if(dezena == 0 && unidade == 0){
    printf("Setecentos");}
   else
    printf("Setecentos e ");
  }
  if ( i == 600) {
   if(dezena == 0 && unidade == 0){
    printf("Seiscentos");}
   else
    printf("Seiscentos e ");
  }
  if ( i == 500) {
   if(dezena == 0 && unidade == 0){
    printf("Quinhentos");}
   else
    printf("Quinhentos e ");
  }
  if ( i == 400) {
   if(dezena == 0 && unidade == 0){
    printf("Quatrocentos");}
   else
    printf("Quatrocentos e ");
  }
  if ( i == 300) {
   if(dezena == 0 && unidade == 0){
    printf("Trezentos");}
   else
    printf("Trezentos e ");
  }
  if ( i == 200) {
   if(dezena == 0 && unidade == 0){
    printf("Duzentos");}
   else
    printf("Duzentos e ");
  }
  if ( i == 100) {
   if(dezena == 0 && unidade == 0){
    printf("cem");}
   else
    printf("cento e ");
  }
  if ( a == 20) {
   if(dezena == 0 || unidade == 0){
    printf("Vinte");}
   else
    printf("Vinte e ");
  }
  if ( a == 30) {
   if(dezena == 0 || unidade == 0){
    printf("Trinta");}
   else
    printf("Trinta e ");
  }
  if ( a == 40) {
   if(dezena == 0 || unidade == 0){
    printf("Quarenta");}
   else
    printf("Quarenta e ");
  }
  if ( a == 50) {
   if(dezena == 0 || unidade == 0){
    printf("Cincoenta");}
   else
    printf("Cinquenta e ");
  }
  if ( a == 60) {
   if(dezena == 0 || unidade == 0){
    printf("Sessenta");}
   else
    printf("Sessenta e ");
  }
  if ( a == 70) {
   if(dezena == 0 || unidade == 0){
    printf("Setenta");}
   else
    printf("Setenta e ");
  }
  if ( a == 80) {
   if(dezena == 0 || unidade == 0){
    printf("Oitenta");}
   else
    printf("Oitenta e ");
  }
  if ( a == 90) {
   if(dezena == 0 || unidade == 0){
    printf("Noventa");}
   else
    printf("Noventa e ");
  }
  if ( q  == 11 ) {printf("Onze");getche();main();}
  if ( q  == 12 ) {printf("Doze");getche();main();}
  if ( q  == 13 ) {printf("Treze");getche();main();}
  if ( q  == 14 ) {printf("Catorze");getche();main();}
  if ( q  == 15 ) {printf("Quinze");getche();main();}
  if ( q  == 16 ) {printf("Dezesseis");getche();main();}
  if ( q  == 17 ) {printf("Dezessete");getche();main();}
  if ( q  == 18 ) {printf("Dezoito");getche();main();}
  if ( q  == 19 ) {printf("Dezenove");getche();main();}
  if ( e  == 1 ) {printf("Um");}
  if ( e  == 2 ) {printf("Dois");}
  if ( e == 3 )  { printf("Tres");}
  if ( e == 4 )  {printf("Quatro");}
  if ( e == 5 )  { printf("Cinco");}
  if ( e == 6 )  { printf("Seis");}
  if ( e == 7 )  { printf("Sete");}
  if ( e == 8 )  { printf("Oito");}
  if ( e == 9 )  { printf("Nove");}
  if ( a == 10 ) {printf("Dez");}
  getche();
 }while ( 1 );
}











Programa Números Cardinais II

Mais avançado, mais inteligente e mais organizado, este programa apresenta evoluções em relação ao outro que postei:

"PROGRAMA NUMEROS CARDINAIS"

Se você é iniciante em linguagem C, não pode deixar de testar estes dois programas, principalmente este,
porque o funcionamento é excelente e o código é de fácil entendimento.
Um dos destaque do programa é a função Cardinais();que é responsável
por barrar caracteres digitados ou string, e a milagrosa função atoi
que converte os números colhidos pela função gets(); para inteiros.

O código foi criado no eclipse e está rodando sem nenhum warning.

Clique aqui e curta minha página no facebook



Veja abaixo o código do programa:



#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
void Janela5 ( ) {
     int lin, col;
     col = 0;
     for ( lin = 2; lin <= 24 ; lin++ )
         for ( col = 2; col <= 78 ; col++ ) {
              gotoxy ( col , lin );
              textbackground ( AZULCLARO );
              printf ( " " );
         }
}
int n = 0, un, de, ce, mi, erro = 0;
int main ( );
void FuncUnidade ( ) {
     if ( un == 1 ) {
         printf ( "Um" );
     }
     if ( un == 2 ) {
         printf ( "Dois" );
     }
     if ( un == 3 ) {
         printf ( "Tres" );
     }
     if ( un == 4 ) {
         printf ( "Quatro" );
     }
     if ( un == 5 ) {
         printf ( "Cinco" );
     }
     if ( un == 6 ) {
         printf ( "Seis" );
     }
     if ( un == 7 ) {
         printf ( "Sete" );
     }
     if ( un == 8 ) {
         printf ( "Oito" );
     }
     if ( un == 9 ) {
         printf ( "Nove" );
     }
}
int Cardinais ( char num [ 4 ] ) {
     int i, lev;
     lev = strlen ( num );
     for ( i = 0; i < lev; i++ ) {
         if ( num [ i ] < '0' || num [ i ] > '9' )
              return 0;
     }
     return 1;
}
int main ( ) {
     system ( "title PROGRAMA NUMEROS CARDINAIS II" );
     char num [ 10 ];
     Janela5 ( );
     do {
         textcolor ( VERMELHOCLARO );
         gotoxy ( 29 , 3 );
         printf ( "PROGRAMA NUMEROS CARDINAIS II" );
         textcolor ( AMARELO );
         gotoxy ( 24 , 5 );
         printf ( "Programa desenvolvido por:" );
         textcolor ( CIANOCLARO );
         gotoxy ( 51 , 5 );
         printf ( "Samuel Lima" );
         textcolor ( VERDECLARO );
         gotoxy ( 34 , 7 );
         printf ( "sa_sp10@hotmail.com" );
         textcolor ( BRANCO );
         gotoxy ( 25 , 9 );
         printf ( "Digite um Numero ou  -1 Para sair: " );
         textcolor ( PRETO );
         gets ( num );
         n = atoi ( num );
         if ( n == -1 ) {
              textcolor ( VERMELHOCLARO );
              gotoxy ( 33 , 20 );
              printf ( "O ROCCO AGRADECE" );
              Sleep ( 1800 );
              exit ( 0 );
         }
         while ( n < 0 || n > 9999 ) {
              textcolor ( VERMELHOCLARO );
              gotoxy ( 25 , 11 );
              printf ( "\aO Numero nao Pode Ser Negativo" );
              textcolor ( VERMELHOCLARO );
              gotoxy ( 25 , 12 );
              printf ( "Nem Maior que 10000" );
              getche ( );
              erro = 0;
              main ( );
         }
         if ( Cardinais ( num ) == 0 ) {
              textcolor ( VERDECLARO );
              gotoxy ( 34 , 12 );
              printf ( "Voce digitou: %s" , num );
              textcolor ( VERDECLARO );
              gotoxy ( 34 , 13 );
              printf ( "\aIsso nao e um numero Valido !" );
              getche ( );
              erro = 0;
              main ( );
         } else {
              //separa milhares
              mi = ( n / 1000 );
               //separa centenas
              ce = ( ( n - ( mi * 1000 ) ) / 100 );
              //separa dezenas
              de = ( ( n - ( ( mi * 1000 ) + ( ce * 100 ) ) ) / 10 );
               //separa unidades
              un = ( n - ( ( mi * 1000 ) + ( ce * 100 ) + ( de * 10 ) ) );
              textcolor ( VERMELHOCLARO );
              gotoxy ( 35 , 11 );
              printf ( "Voce digitou: " );
              textcolor ( PRETO );
              gotoxy ( 50 , 11 );
              printf ( "%d %d %d %d" , mi , ce , de , un );
              textcolor ( AMARELO );
              gotoxy ( 15 , 13 );
              printf ("Separando A milhar, centenas, dezenas, e unidades Temos:" );
              gotoxy ( 35 , 15 );
              mi = mi * 1000;
              ce = ce * 100;
              de = de * 10;
              un = un * 1;
              textcolor ( VERDECLARO );
              printf ( " %d %d %d %d" , mi , ce , de , un );
              textcolor ( PRETO );
              gotoxy ( 37 , 17 );
              printf ( "%d Milhar" , mi / 1000 );
              gotoxy ( 37 , 18 );
              printf ( "%d Centenas" , ce / 100 );
              gotoxy ( 37 , 19 );
              printf ( "%d Dezenas" , de / 10 );
              gotoxy ( 37 , 20 );
              printf ( "%d Unidades" , un / 1 );
              getche ( );
              textcolor ( VERMELHOCLARO );
              gotoxy ( 15 , 21 );
              printf ( "Em Cardinal:" );
              textcolor ( PRETO );
              gotoxy ( 3 , 23 );
              if ( mi == 9000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Nove Mil " );
                   } else {
                        printf ( "Nove Mil e " );
                   }
              }
              if ( mi == 8000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Oito Mil " );
                   } else printf ( "Oito Mil e " );
              }
              if ( mi == 7000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Sete Mil " );
                   } else printf ( "Sete Mil e " );
              }
              if ( mi == 6000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Seis Mil " );
                   } else printf ( "Seis Mil e " );
              }
              if ( mi == 5000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Cinco Mil " );
                   } else printf ( "Cinco Mil e " );
              }
              if ( mi == 4000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Quatro Mil " );
                   } else printf ( "Quatro Mil e " );
              }
              if ( mi == 3000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Tres Mil " );
                   } else printf ( "Tres Mil e " );
              }
              if ( mi == 2000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Dois Mil " );
                   } else printf ( "Dois Mil e " );
              }
              if ( mi == 1000 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Mil " );
                   } else printf ( "Mil e " );
              }
              if ( ce == 900 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Novecentos" );
                   } else printf ( "Novecentos e " );
              }
              if ( ce == 800 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Oitocentos" );
                   } else printf ( "Oitocentos e " );
              }
              if ( ce == 700 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Setecentos" );
                   } else printf ( "Setecentos e " );
              }
              if ( ce == 600 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Seiscentos" );
                   } else printf ( "Seiscentos e " );
              }
              if ( ce == 500 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Quinhentos" );
                   } else printf ( "Quinhentos e " );
              }
              if ( ce == 400 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Quatrocentos" );
                   } else printf ( "Quatrocentos e " );
              }
              if ( ce == 300 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Trezentos" );
                   } else printf ( "Trezentos e " );
              }
              if ( ce == 200 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Duzentos" );
                   } else printf ( "Duzentos e " );
              }
              if ( ce == 100 ) {
                   if ( de == 0 && un == 0 ) {
                        printf ( "Cem" );
                   } else printf ( "Cento e " );
              }
              if ( de == 20 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Vinte" );
                   } else printf ( "Vinte e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( de == 30 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Trinta" );
                   } else printf ( "Trinta e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( de == 40 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Quarenta" );
                   } else printf ( "Quarenta e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( de == 50 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Cincoenta" );
                   } else printf ( "Cinquenta e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( de == 60 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Sessenta" );
                   } else printf ( "Sessenta e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( de == 70 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Setenta" );
                   } else printf ( "Setenta e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( de == 80 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Oitenta" );
                   } else printf ( "Oitenta e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( de == 90 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Noventa" );
                   } else printf ( "Noventa e " );
                   FuncUnidade ( );
                   getche ( );
                   main ( );
              }
              if ( un == 1 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Um" );
                        getche ( );
                        main ( );
                   } else printf ( "Onze " );
                   getche ( );
                   main ( );
              }
              if ( un == 2 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Dois" );
                   } else printf ( "Doze " );
                   getche ( );
                   main ( );
              }
              if ( un == 3 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Tres" );
                   } else printf ( "Treze " );
                   getche ( );
                   main ( );
              }
              if ( un == 4 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Quatro" );
                   } else printf ( "Catorze " );
                   getche ( );
                   main ( );
              }
              if ( un == 5 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Cinco" );
                   } else printf ( "Quinze " );
                   getche ( );
                   main ( );
              }
              if ( un == 6 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Seis" );
                   } else printf ( "Dezesseis " );
                   getche ( );
                   main ( );
              }
              if ( un == 7 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Sete" );
                   } else printf ( "Dezessete " );
                   getche ( );
                   main ( );
              }
              if ( un == 8 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Oito" );
                   } else printf ( "Dezoito " );
                   getche ( );
                   main ( );
              }
              if ( un == 9 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Nove" );
                        getche ( );
                        main ( );
                   } else printf ( "Dezenove " );
                   getche ( );
                   main ( );
              }
              if ( de == 10 ) {
                   if ( de == 0 || un == 0 ) {
                        printf ( "Dez" );
                        getche ( );
                        main ( );
                   }
              }
              getche ( );
         }
     } while ( 1 );
}