Advertisement
EduPsEudo

numero por extenso

Mar 22nd, 2022
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define true 1
  6. #define false 0
  7.  
  8. /*
  9.     Para esse programa, precisamos programar uma forma do código receber um número de no máximo 15 dígitos
  10.     e imprimir na tela esse valor por extenso.
  11.  
  12.     Ex: 1.920.734 -> Um milhão novecentos e vinte mil setecentos e trinta e quatro.
  13.  
  14.     MAX: 999.999.999.999.999
  15. */
  16.  
  17. int checaValidez(int tamanho, char string[])
  18. {
  19.     int i;
  20.  
  21.     for (i = 0; i < tamanho; i++)
  22.     {
  23.         char digito = string[i];
  24.         if (digito != '0' && digito != '1' && digito != '2' && digito != '3' && digito != '4' && digito != '5' && digito != '6' && digito != '7' && digito != '8' && digito != '9')
  25.         {
  26.             return false;
  27.         }
  28.     }
  29.     return true;
  30. }
  31.  
  32. void escreverNumeracao(int conj, int resto)
  33. {
  34.     if (resto != 0) conj += 1;
  35.  
  36.     if (conj == 5) printf("trilhao ");
  37.     else if (conj == 4) printf("bilhao ");
  38.     else if (conj == 3) printf("milhao ");
  39.     else if (conj == 2) printf("mil ");
  40. }
  41.  
  42. void escreverConj(int pos0, char valor[])
  43. {
  44.    
  45. }
  46.  
  47. // 55.210
  48.  
  49. // 55.999.999.999.999
  50.  
  51. void escreverNumCompleto(int conj, int resto, char valor[])
  52. {
  53.     int i;
  54.     int posConj = resto;
  55.  
  56.     if (resto != 0)
  57.     {
  58.         escreverConj(resto - 1, valor);
  59.         escreverNumeracao(conj, resto);
  60.     }
  61.  
  62.     resto = 0;
  63.  
  64.     for (; conj > 0; conj--)
  65.     {
  66.         escreverConj(posConj, valor);
  67.         escreverNumeracao(conj, resto);
  68.         posConj += 3;
  69.     }
  70. }
  71.  
  72. int main()
  73. {
  74.     char valor[15];
  75.  
  76.     scanf("%s", valor);
  77.  
  78.     int tamNum = strlen(valor);
  79.     int validez = checaValidez(tamNum, valor);
  80.  
  81.     if (validez == 0)
  82.     {
  83.         printf("Valor invalido.\n");
  84.         return 0;
  85.     }
  86.  
  87.     int conj = tamNum / 3;
  88.     int resto = tamNum % 3;
  89.  
  90.     escreverNumCompleto(conj, resto, valor);
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement