some image

Tag Programación

Convertir Numeros a Letras (C++)

Etiquetas: , , , , Blog, Programación No comments

ciento_uno

 

Ha de esperarse que en algún momento de la carrera (y esto va para los que están estudiando ingeniería de sistemas), el profesor de programación les pida un programa donde se puedan convertir los números a su equivalente en letras. Normalmente requieren de 1-100(uno a cien), ó de 1-1000(uno a mil), pero si eres mi profesor de programación sabras que quisiste poner en aprietos a todos los estudiantes y lo pediste de 1-10000(uno a diez mil).

Lo primero que pensé fue que este programa sería un hueso duro de roer porque no hay mucho conocimiento ni experiencia cuando solo has visto la asignatura de algoritmos, pero al llegar a la solución me di cuenta de que no es una cosa del otro mundo y que se puede solucionar fácilmente si tienes buenas bases de programación.

Acá se los explico:

Lo primero que hay que hacer es desglosar el número desde su decenas de mil hasta sus unidades (esto va para el caso de los números de 1-10000), con una simple formula matemática.

Ejemplo:

Si tenemos el número 9834 haremos lo siguiente.

  • Verificar si tiene decenas de mil

9834 / 10000 = 0  (Si lo haces en una calculadora te dará algo como 0.9834, pero como es una división entre enteros los números después del punto no cuentan).

  • Unidades de mil

(9834 / 1000) % 10 = 9 (Para los que no están enterados, el % (porcentaje) representa el símbolo MOD, donde este hace la división pero en ves de arrojar el cociente muestra el residuo, que en este caso es nueve).

  • Centenas

(9834 / 100) % 10 = 8

  • Decenas

(9834 / 10) % 10 =  3

  • Unidades

(9834 %10) = 4

Lo anterior fue lo “dificil” del problema, ahora lo que sigue es lo sencillo y no creo que sea necesario explicar todas las sentencias if/else if/else ya que el código es muy diciente, por eso después de tanta palabrería acá les va el código.

 

#include <cstdlib>
#include <iostream>

/*
* Programa: Numeros_letras.cpp
* Autor: Juan Gómez
* Blog: Codes and Tags
* Fecha: 03/06/2015
*/

using namespace std;

int main() {

   int numero, n1, n2, n3, n4, n5;
   cout<<"Escribe un numero de uno a diez mil (numeros): "; cin>>numero;
   n1 = numero / 10000; 
   n2 = (numero / 1000) % 10;
   n3 = (numero / 100) % 10;
   n4 = (numero / 10) % 10;
   n5 = (numero % 10);

   cout<<"\n"<<n1<<" -> Decenas de mil"<<endl;
   cout<<n2<<" -> Unidades de mil"<<endl;
   cout<<n3<<" -> Centenas"<<endl;
   cout<<n4<<" -> Decenas"<<endl;
   cout<<n5<<" -> Unidades \n"<<endl;  
   if(numero > 10000){
      cout<<"El numero ingresado excede el rango de valores";
   }else{
      if(n1 == 1){
      cout<<"Diez mil"; 
      }
      //Sentencia para determinar los miles
      if(n2 == 1){
         cout<<"MIL ";
      }else if(n2 == 2){ 
         cout<<"DOS MIL "; 
      }else if(n2 == 3){
         cout<<"TRES MIL "; 
      }else if(n2 == 4){
         cout<<"CUATRO MIL "; 
      }else if(n2 == 5){
         cout<<"CINCO MIL "; 
      }else if(n2 == 6){
        cout<<"SEIS MIL "; 
      }else if(n2 == 7){
         cout<<"SIETE MIL "; 
      }else if(n2 == 8){
         cout<<"OCHO MIL "; 
      }else if(n2 == 9){
         cout<<"NUEVE MIL "; 
      }
      //Setencia para determinar los cientos
      if(n3 == 1 && n4 == 0 && n5 == 0){
         cout<<"CIEN";
      }else if(n3 == 1){
         cout<<"CIENTO ";
      }else if(n3 == 2){
         cout<<"DOSCIENTOS "; 
      }else if(n3 == 3){
         cout<<"TRESCIENTOS "; 
      }else if(n3 == 4){
         cout<<"CUATROCIENTOS "; 
      }else if(n3 == 5){
         cout<<"QUINIENTOS "; 
      }else if(n3 == 6){
         cout<<"SEISCIENTOS "; 
      }else if(n3 == 7){
         cout<<"SETECIENTOS "; 
      }else if(n3 == 8){
         cout<<"OCHOCIENTOS "; 
      }else if(n3 == 9){
         cout<<"NOVECIENTOS "; 
      }
      //Setencia para determinar las decenas
      if(n4 == 1 && n5 == 0){
         cout<<"Diez";
      }else if(n4 == 1 && n5 == 1){
         cout<<"ONCE";
      }else if(n4 == 1 && n5 == 2){
         cout<<"DOCE";
      }else if(n4 == 1 && n5 == 3){
         cout<<"TRECE";
      }else if(n4 == 1 && n5 == 4){
         cout<<"CATORCE";
      }else if(n4 == 1 && n5 == 5){
         cout<<"QUINCE";
      }else if(n4 == 1){
         cout<<"DIECI";
      }
      if(n4 == 2 && n5 == 0){
         cout<<"VEINTE";
      }else if(n4 == 2){
         cout<<"VEINTI"; 
      }else if(n4 == 3 && n5 == 0){
         cout<<"TREINTA";
      }else if(n4 == 3){
         cout<<"TREINTA Y "; 
      }else if(n4 == 4 && n5 == 0){
         cout<<"CUARENTA";
      }else if(n4 == 4){
         cout<<"CUARENTA Y "; 
      }else if(n4 == 5 && n5 == 0){
         cout<<"CINCUENTA";
      }else if(n4 == 5){
         cout<<"CINCUENTA Y "; 
      }else if(n4 == 6 && n5 == 0){
         cout<<"SESENTA";
      }else if(n4 == 6){
         cout<<"SESENTA Y "; 
      }else if(n4 == 7 && n5 == 0){
         cout<<"SETENTA";
      }else if(n4 == 7){
         cout<<"SETENTA Y "; 
      }else if(n4 == 8 && n5 == 0){
         cout<<"OCHENTA";
      }else if(n4 == 8){
         cout<<"OCHENTA Y "; 
      }else if(n4 == 9 && n5 == 0){
         cout<<"NOVENTA";
      }
      else if(n4 == 9){
         cout<<"NOVENTA Y ";
      } 
      //Sentencia para determinar las unidades  
      if(n5 == 1 && n4 > 1){
         cout<<"UNO"; 
      }else if(n5 == 1 && n4 == 0){
         cout<<"UNO";  
      }else if(n5 == 2 && n4 > 1){
         cout<<"DOS"; 
      }else if(n5 == 2 && n4 == 0){
         cout<<"DOS"; 
      }else if(n5 == 3 && n4 > 1){
         cout<<"TRES"; 
      }else if(n5 == 3 && n4 == 0){
         cout<<"TRES";  
      }else if(n5 == 4 && n4 > 1){
         cout<<"CUATRO"; 
      }else if(n5 == 4 && n4 == 0){
         cout<<"CUATRO";  
      }else if(n5 == 5 && n4 > 1){
         cout<<"CINCO"; 
      }else if(n5 == 5 && n4 == 0){
         cout<<"CINCO"; 
      }else if(n5 == 6){
         cout<<"SEIS"; 
      }else if(n5 == 7){
         cout<<"SIETE"; 
      }else if(n5 == 8){
         cout<<"OCHO"; 
      }else if(n5 == 9){
         cout<<"NUEVE"; 
      }
   } 
}

Resultado numeros letras

Consejos para competir en las Maratones de Programación

Etiquetas: , Blog, Programación No comments

 

Maratones de Programacion

Maratones de Programacion

 

Ultimamente he estado empapandome del mundo de las maratones de programación, documentandome y participando en algunas paginas que me permitan conocer mis debilidades y a partir de mucha practica,  documentación y experiencia tener más habilidades que debilidades. Hablando con varios amigos sobre su experiencia en este mundo, listare  algunos consejos muy utiles para generar competencia.\r\n\r\n \r\n

 

    1. Saber ingles (Para saber que vamos hacer, en varias oportunidades, me daba cuenta que estaba haciendo lo que no debía :( ) En las competencias por lo general los problemas son inglés con mucho vocabulario técnico.
    2. Saber leer el API (La solución siempre está en el API, pero si no sabemos consultarlo y aplicarlo gastaremos tiempo en funciones ya existentes).
    3. Conocer el IDE (La consola, el debugger, teclas rápidas, estas cosas ahorran mucho tiempo).
    4. Saber hacer Debug (Cuando se emplea recursividad no es igual de sencillo al convencional). Realizar un buen Debug al programa puede ahorranos mucho tiempo de prueba y error.
    5. Mirar los problemas desde varios puntos : Nunca te quedes solo con punto de vista, porque puede que sea el camino más largo para programar o totalmente ineficiente.
    6. Aprender bien el uso de la clase java.utils... Esa mi###a es muy util xDDD… si no es en java entonces tener buenas estructuras de datos.
    7. Estudia alguito de teoria de numeros.
    8. Siempre mete clases como BigInteger o BigDecimal(si usas java) si no el homologo en C, depende de el entorno que andes hay diferentes.
    9. Si andas en C, inventate defines del preprocesador para las funciones, que sean cortas y faciles de programar.
    10. Puedes llevar materiales como : Formulas de matemáticas, Diccionario de Ingles, Tener claro como usar el Debugger + Teclas de Acceso + Refactor.
    11. Proponerse resolver 1 ejercicio diario o por lo menos 1 a la semana, para no perder la constumbre.
    12. Cuando entrenes (OJO : No en competencia) siempre intenta documentar lo que haces para definir un estandar de la forma en que haces las cosas (Es algo mecanico y asi obtienes más agilidad).
    13. Bonus Extran14. No fumes hasta salir…no pienses en cigarrillos o te jodes por la ansiedad xD.
    14.  llevate algo de tomar y algun dulce.

PDTA : Algunos amigos como Phicar y Clerigo, colaboraron en este listado.