/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Convertir numeros a letras

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
kokoy



Registrado: 14 May 2012
Mensajes: 1

MensajePublicado: 14/05/2012 8:06 pm
Título: Convertir numeros a letras

tengo un rpoyecto para la escuela y es operar una linea de autobuses, que cuando el usuario solicite la cantidad de boletos determine atravez de texto la cantidad a cobrar, si la cantidad son 250 pesos, muestre en pantalla Doscientos cincuenta pesos.

Código:
//Directivas del Preprocesador
#include<stdio.h>
#include<conio.h>

int numalet(int [10]);

//Función principal
main()
{//Inicio del Programa

  char semaforo;
  semaforo=0;
  do
 
  {
 
  /*
  Declaramos las constantes y las variables, una buena tecnica de diseño es
  dar formato a la pantalla, con algunos colores.
  */
 
  int boletaje, total, pago, cambio;
  const int precio = 50;
//  clrscr();
//  textcolor(WHITE);
  printf("************ Venta de boletos BusesX**************\n\n");
 
  //Datos de entrada y asignación de espacio en memoria
 
  printf("Proporcione el numero de Boletos que desea Comprar:\t");
  scanf("%d",&boletaje);
 
  //Calculamos el total de la venta
 
  total = boletaje*precio;
  printf("El total es $$$ %d pesos $$$ \n\n", total);
  numalet(total);
  //Leemos el pago y calculamos el cambio
  printf("Indique el monto de su pago:$ ");
  scanf("%d",&pago);
 
  //Calculamos el cambio del cliente
 
  cambio = pago - total;
  printf("\n\n El monto de su cambio es %d\n", cambio);
  printf("\n\t%d Billetes de $200", cambio/200);
  cambio = cambio%200;
  printf("\n\t%d Billetes de $100", cambio/100);
  cambio = cambio%100;
  printf("\n\t%d Billetes de $50", cambio/50);
  cambio = cambio%50;
  printf("\n\t%d Billetes de $20", cambio/20);
  cambio = cambio%20;
  printf("\n\t%d Monedas de $10", cambio/10);
  cambio = cambio%10;
  printf("\n\t%d Monedas de $5", cambio/5);
  cambio = cambio%5;
  printf("\n\t%d Monedas de $2", cambio/2);
  cambio = cambio%2;
  printf("\n\t%d Monedas de $1", cambio);
 
  //Salida del Sistema y asiganaciones
 
  printf("\n\n\n\nBusesX le agradece su preferencia\n\n\n\n");
  printf("Quieres Salir del sistema de Boletos? Presiona S o N para salir: ");
  scanf("%s", &semaforo);
 
  } 
 
  while (semaforo=='S'||semaforo=='s');         
 
}//Fin de la funcion Main

int numalet(int num[10])
{
   //int num[10];
   int i,j=1,p;

   //printf("Introduce un numero no mayor a 999,999,999\n");
   for(i=0;(num[i]/*=getchar()*/) != '\n';i++);

   if(i>6&&i<=9) p=6;
      else if(i>3&&i<=6){ p=3; j++; }
  else if(i>0&&i<=3){ p=0; j+=2; }
for(j=j;j<=3;j++)
{
/*centenas*/
  if((i==3 || i==6)||(num[0]!='\0' || num[3]!='\0' || num[6]!='\0') )
      switch(num[i-(3+p)])
      {
    case'1':if((num[(i-(3+p))+1]!='0') || (num[(i-(3+p))+2]!='0'))
           printf("ciento ");
   else
           printf("cien ");
       break;
    case'2':printf("doscientos ");break;
    case'3':printf("trescientos ");break;
    case'4':printf("cuatrocientos ");break;
    case'5':printf("quinientos ");break;
    case'6':printf("seiscientos ");break;
    case'7':printf("setecientos ");break;
    case'8':printf("ochocientos ");break;
    case'9':printf("novecientos ");break;
      }
/*decenas*/

      switch(num[i-(p+2)])
      {
    case'1':switch(num[(i-(p+2))+1])
       {
          case'0':printf("diez ");break;
          case'1':printf("once ");break;
          case'2':printf("doce ");break;
          case'3':printf("trece ");break;
          case'4':printf("catorce ");break;
          case'5':printf("quince ");break;
          case'6':printf("diesciseis ");break;
          case'7':printf("diescisiete ");break;
          case'8':printf("diesciocho ");break;
          case'9':printf("diescinueve ");break;
       }break;
    case'2':if(num[(i-(p+2))+1]=='0')   printf("veinte ");
       else   printf("veinti");   break;
    case'3':printf("treinta "); if(num[(i-1)-p]!='0') printf("y "); break;
    case'4':printf("cuarenta "); if(num[(i-1)-p]!='0') printf("y "); break;
    case'5':printf("cincuenta "); if(num[(i-1)-p]!='0') printf("y "); break;
    case'6':printf("secenta "); if(num[(i-1)-p]!='0') printf("y "); break;
    case'7':printf("setenta "); if(num[(i-1)-p]!='0') printf("y "); break;
    case'8':printf("ochenta "); if(num[(i-1)-p]!='0') printf("y "); break;
    case'9':printf("noventa "); if(num[(i-1)-p]!='0') printf("y "); break;
      }
/*unidades*/
      if(num[i-(p+2)]!='1')
      switch(num[(i-1)-p])
      {
    case'1':if(p>=3) printf("un ");
      else printf("uno");
      break;
    case'2':printf("dos ");break;
    case'3':printf("tres ");break;
    case'4':printf("cuatro ");break;
    case'5':printf("cinco ");break;
    case'6':printf("seis ");break;
    case'7':printf("siete ");break;
    case'8':printf("ocho ");break;
    case'9':printf("nueve ");break;
      }
    if(p==6 && num[0]=='0' && p==6 && num[1]=='0' && p==6 && num[2]=='0');
       else if(p==6 && num[0]=='1' && i==7) printf("millon ");
     else if(p==6) printf("millones ");
    if(p==3 && num[p]!='0'|| p==3 && num[p+1]!='0' || p==3 && num[p+2]!='0')printf("mil ");
    p-=3;
    }
   //getchar();
   return 0;
}
Volver arriba
Pantalàimon_



Registrado: 17 Jul 2007
Mensajes: 1344

MensajePublicado: 15/05/2012 3:08 am
Título:

Interesante el proyecto. ¿Y que dudas tienes?

Por cierto, ten en cuenta este consejo que a veces es muy util:
Cosa que puedas hacer con un switch caso por caso, muchas veces se puede solucionar con arrays sin tener que escribir caso por caso.

Esto te puede ser útil.

Un saludo!
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com