Foros del Web » Programación para mayores de 30 ;) » C/C++ »

programa de microsoft visual c++

Estas en el tema de programa de microsoft visual c++ en el foro de C/C++ en Foros del Web. Buenas noches, soy nuevo en la pagina y si rompo alguna reglea o algo x favor diganme.. mi problema es el siguiente, la verdad no ...
  #1 (permalink)  
Antiguo 12/11/2011, 00:51
 
Fecha de Ingreso: noviembre-2011
Ubicación: En mi casa
Mensajes: 4
Antigüedad: 13 años
Puntos: 0
programa de microsoft visual c++

Buenas noches, soy nuevo en la pagina y si rompo alguna reglea o algo x favor diganme..
mi problema es el siguiente, la verdad no se mucho de c++ pero por obra de la vida estoy a punto de terminar esta materia...
Necesito crear un programa en el que introduzca un numero... y este me imprima el nombre del numero.. es decir si yo pongo 6 , salga: seis!...
el programa va del 0 al 1000!

Y lo que llevo es esto...
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
string unidades[15], decenas[10], centenas[10];
int a, b, c;

char n[4];

void main ()
{

unidades[1]="uno \n";
unidades[2]="dos \n";
unidades[3]="tres \n";
unidades[4]="cuatro \n";
unidades[5]="cinco \n";
unidades[6]="seis \n";
unidades[7]="siete \n";
unidades[8]="ocho \n";
unidades[9]="nueve \n";
unidades[10]="Diez";
unidades[11]="Once";
unidades[12]="Doce";
unidades[13]="Trece";
unidades[14]="Catorce";
unidades[15]="Quince";

decenas[1]="Diez";
decenas[2]="Veinte ";
decenas[3]="treinta";
decenas[4]="cuarenta";
decenas[5]="cincuenta";
decenas[6]="sesenta";
decenas[7]="setenta";
decenas[8]="ochenta";
decenas[9]="noventa";

centenas[1]="ciento";
centenas[2]="Docientos";
centenas[3]="Trecientos";
centenas[4]="Cuatrocientos";
centenas[5]="Quinientos";
centenas[6]="Seicientos";
centenas[7]="Setecientos";
centenas[8]="Ochocientos";
centenas[9]="Novecientos";
centenas[10]="Mil";

a = n[0];
b = n[1];
c = n[2];


printf("Convierte de numero a letra :");
cin>>n;
Desde aqui!
{
cout<<centenas[a]<<" "<<decenas<<"y"<<unidades[c];

if (b==1)
{ cout<<centenas[a]<<"Dieci"<<unidades[c];
}
else
{
if (b==2)
{cout<<centenas[a]<<"Veinti"<<unidades[c]; }
}
}

}


pero el programa no me corre, no imprime ningun valor solo la "y"...
que necesito para que sirva?..

pd.. el profe es de esos que no enseña pero exige.. y nos dijo que el programa no debe pasar de 4 lineas (las lineas empiezan "Desde aqui") ( sin contar lo de unidades, dec. centenas xq sino creo que seria imposible)... si pudieran ayudarme con la misma forma de ponerlo.. xq aveces veo programas con cosas que ni se y en ningun lugar algun if o else =/

De ante mano gracias :)!
  #2 (permalink)  
Antiguo 14/11/2011, 10:19
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 0
Respuesta: programa de microsoft visual c++

No tengo tiempo de ponerte todo el programa pero te dejo la idea utilizando tus líneas.
Para ahorrar lineas:
string unidades[15]={"uno",dos",...,"Quince"}

Para la salida
string salida = centenas[a] + " " + decenas[b] + "y" + unidades[c];

cout<<salida ;

De todas formas para el cin yo utilizaría otro string y leería letra a letra y lo transformas a int con la funcion stoi(string).

Un saludo.
  #3 (permalink)  
Antiguo 14/11/2011, 19:16
 
Fecha de Ingreso: noviembre-2011
Ubicación: En mi casa
Mensajes: 4
Antigüedad: 13 años
Puntos: 0
Respuesta: programa de microsoft visual c++

Lo hice asi, pero al momento de que lo corro, cual quier numero que ponga me sale cientodiezyuno... es decir, el primero de cada string "/
  #4 (permalink)  
Antiguo 14/11/2011, 19:17
 
Fecha de Ingreso: noviembre-2011
Ubicación: En mi casa
Mensajes: 4
Antigüedad: 13 años
Puntos: 0
Respuesta: programa de microsoft visual c++

me queda asi
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
string unidades[15]={"uno","dos","tres","cuatro","cinco","seis","siet e","ocho","nueve","diez","once","doce","trece", "catorce"," quince"};
string decenas[10]={"diez","veinte","treinta","cuarenta","cincuenta" ,"sesenta","setenta","ochenta","noventa"};
string centenas[10]={"Ciento","Doscientos","Trescientos","Cuatrocient os","Quinientos","Seiscientos","Setescientos","Och ocientos","Novecientos","Mil"};
int a, b, c;




void main ()
{
char n[4];
a = n[2];
b = n[1];
c = n[0];


printf("Convierte de numero a letra :");
cin>>n;

{
string salida= centenas[a] + decenas[b] + "y" + unidades[c];
cout<<salida ;

if (b==1)
{ string salida= centenas[a] + "Dieci" + unidades[c];
cout<<salida ;
}
else
{
if (b==2)
{string salida= centenas[a] + "Veinti" + unidades[c];
cout<<salida ;}
}
}

}
  #5 (permalink)  
Antiguo 14/11/2011, 20:51
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: programa de microsoft visual c++

esto debería ir al revés:
char n[4];



printf("Convierte de numero a letra :");
cin>>n;

a = n[2];
b = n[1];
c = n[0];

ademas ahi vas a tener caracteres ascii. Le tienes que restar el codigo ascii del cero para tener un numero:

a = n[2] - '0';
b = n[1] - '0';
c = n[0] - '0';

Igualmente yo recomendaria lo siguiente:


Código C:
Ver original
  1. int n,a,b,c;
  2. cin >> n;
  3. a = n%1000;
  4. b = n%100;
  5. c = n %10;

Luegos usas todos los condicionales que quieras!!
  #6 (permalink)  
Antiguo 14/11/2011, 21:56
 
Fecha de Ingreso: noviembre-2011
Ubicación: En mi casa
Mensajes: 4
Antigüedad: 13 años
Puntos: 0
Respuesta: programa de microsoft visual c++

De la forma en que tu me dices que lo haga me salen hasta simbolos y no los numeros "/
  #7 (permalink)  
Antiguo 15/11/2011, 05:05
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: programa de microsoft visual c++

Me confundi, perdon:

Código C:
Ver original
  1. int n,a,b,c;
  2.     cin >> n;
  3.     c = n % 10:
  4.     n /= 10;
  5.     b = n % 10:
  6.     n /= 10;
  7.     a = n % 10:
  8.     n /= 10;

Etiquetas: c++
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.