Transformar el monto numérico del cheque a palabras [C].

Iniciado por DanielPy, 17 Enero 2015, 18:14 PM

0 Miembros y 1 Visitante están viendo este tema.

DanielPy

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:   
CitarEscriba 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

#include <stdio.h>
#include <string.h>

#define MAX 10

void completar(char cheque[]);
void proteger(char cheque[]);
void numeroAletra(char cheque[]);

int main(void) {
char cheque[MAX];

printf("\n Ingrese el monto del cheque...:");
fgets(cheque, sizeof(cheque), stdin);
completar(cheque);
proteger(cheque);
//numeroAletra(cheque);
    printf("\n\n Pulse [Enter] para finalizar...");
    getchar();
    return 0;
}

void completar(char cheque[]){
char *p=NULL;
int ch;

if((p=strchr(cheque, '\n'))){
*p='\0';
}
else{
while((ch = getchar()) !='\n' && ch!=EOF);
}
}

void proteger(char cheque[]){
int longitud = strlen(cheque), max = MAX-1;
cheque[max] = '\0';
for(max--; max >= 0; max--){
if(longitud > 0){
cheque[max] = cheque[longitud-1];
}
else{
cheque[max] = '*';
}
longitud--;
}
printf("\n El monto ingresado = %s", cheque);
}

void numeroAletra(char cheque[]){
char *unidad[] = {"Uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"};
char *decena[] = {"diez", "veinte", "treinta", "cuarenta", "cincuenta", "sescenta", "setenta", "ochenta", "noventa"};
char *centena[] = {"cien", "dosciento", "treciento", "cuatrociento", "quiniento", "seiciento", "seteciento",
"ochocientos", "novecientos"};
char *especiales[] = {"Un", "Mil"};

}


Saludos y desde ya muchas gracias.-
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-

crack81

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
Si C/C++ es el padre de los lenguajes entonces ASM es dios.

DanielPy

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
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor
y cuando lo abrazas dejan de causar dolor.-