Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DanielPy en 17 Enero 2015, 18:14 pm



Título: Transformar el monto numérico del cheque a palabras [C].
Publicado por: DanielPy en 17 Enero 2015, 18:14 pm
Hola a todos.
Bueno, el enunciado del manual con el que estoy estudiando c me pedía:

Citar
*99. 87
123456789
Escriba un programa que introduzca el monto a imprimir en el cheque y después imprima, si es necesario, el monto en formato protegido con asteriscos al principio. Suponga un total de nueve espacios disponibles para la impresión del monto.
 
lo pude lograr, pero el siguiente me trabe y realmente no sé cómo continuar, espero de esas mentes prodigiosas (que abundan por aquí) que me pongan algún ejemplo para poder finalizar con este tema.- :rolleyes: :rolleyes:   
Citar
Escriba un programa que introduzca un monto numérico de cheque y que escriba el equivalente en palabras de dicho monto, Por ejemplo, el monto 112.34 se debe escribir como
CIENTO DOCE y 34/100

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 10
  5.  
  6. void completar(char cheque[]);
  7. void proteger(char cheque[]);
  8. void numeroAletra(char cheque[]);
  9.  
  10. int main(void) {
  11. char cheque[MAX];
  12.  
  13. printf("\n Ingrese el monto del cheque...:");
  14. fgets(cheque, sizeof(cheque), stdin);
  15. completar(cheque);
  16. proteger(cheque);
  17. //numeroAletra(cheque);
  18.    printf("\n\n Pulse [Enter] para finalizar...");
  19.    getchar();
  20.    return 0;
  21. }
  22.  
  23. void completar(char cheque[]){
  24. char *p=NULL;
  25. int ch;
  26.  
  27. if((p=strchr(cheque, '\n'))){
  28. *p='\0';
  29. }
  30. else{
  31. while((ch = getchar()) !='\n' && ch!=EOF);
  32. }
  33. }
  34.  
  35. void proteger(char cheque[]){
  36. int longitud = strlen(cheque), max = MAX-1;
  37. cheque[max] = '\0';
  38. for(max--; max >= 0; max--){
  39. if(longitud > 0){
  40. cheque[max] = cheque[longitud-1];
  41. }
  42. else{
  43. cheque[max] = '*';
  44. }
  45. longitud--;
  46. }
  47. printf("\n El monto ingresado = %s", cheque);
  48. }
  49.  
  50. void numeroAletra(char cheque[]){
  51. char *unidad[] = {"Uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"};
  52. char *decena[] = {"diez", "veinte", "treinta", "cuarenta", "cincuenta", "sescenta", "setenta", "ochenta", "noventa"};
  53. char *centena[] = {"cien", "dosciento", "treciento", "cuatrociento", "quiniento", "seiciento", "seteciento",
  54. "ochocientos", "novecientos"};
  55. char *especiales[] = {"Un", "Mil"};
  56.  
  57. }
  58.  
  59.  
Saludos y desde ya muchas gracias.-
Daniel


Título: Re: Transformar el monto numérico del cheque a palabras [C].
Publicado por: crack81 en 18 Enero 2015, 04:24 am
Creo que hace tiempo resolvi ese problema del monto pero nunca lo habia visto con decimales hasta cuanto tiene que ser la cifrar que ingreses
cientos, miles o millones
y si es la ultima opcion es un poco largo el programa pero no es complicado


Título: Re: Transformar el monto numérico del cheque a palabras [C].
Publicado por: DanielPy en 18 Enero 2015, 12:41 pm
Hola crack81.
Muchas gracias por ocuparte, como no quería postear todo el enunciado omití lo del importe máximo, que es 99.999,99.-
Si te parece muy tedioso sólo dame algunas pistas.-

Saludos.
Daniel