Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2012, 23:27
costegranda
 
Fecha de Ingreso: diciembre-2012
Ubicación: Costeelation
Mensajes: 2
Antigüedad: 11 años, 5 meses
Puntos: 0
Información [Ayuda]Monto Escrito

Saludos chic@s, no suelo crear este tipo de topics pero me vi en la necesidad de buscar ayuda mas avanzada ya que es algo importante para mi este trabajo. La cuestion es que debo realizar un programa muy conocido por algunos, llamado «Monto Escrito», lo llevo casi terminado, solo tengo un problema, el limite, actualmente lo tengo en mil millones,(1.000'000.000) pero tengo un problema, y es que cuando ingreso esa cantidad el programa muere :( , es decir solo llega hasta, 999999999, pero quisiera tambien poder ingresar el numero limite, alguien tiene idea de que puede ser? les adjunto mi codigo
Código:
#include <stdio.h>
#include<iostream>

using namespace std;

int main()
{
	int num[10];
	int i,j=1,p;
	cout<<"Introduce un numero \n"<<endl;
	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'))
	cout<<"ciento "<<endl;
	else
	cout<<"cien "<<endl;
	break;
	case'2':cout<<"doscientos "<<endl;break;
	case'3':cout<<"trescientos "<<endl;break;
	case'4':cout<<"cuatrocientos "<<endl;break;
	case'5':cout<<"quinientos "<<endl;break;
	case'6':cout<<"seiscientos "<<endl;break;
	case'7':cout<<"setecientos "<<endl;break;
	case'8':cout<<"ochocientos "<<endl;break;
	case'9':cout<<"novecientos "<<endl;break;
	}
	/*decenas*/
	
	switch(num[i-(p+2)])
	{
	case'1':switch(num[(i-(p+2))+1])
	{
	case'0':cout<<"diez "<<endl;break;
	case'1':cout<<"once "<<endl;break;
	case'2':cout<<"doce "<<endl;break;
	case'3':cout<<"trece "<<endl;break;
	case'4':cout<<"catorce "<<endl;break;
	case'5':cout<<"quince "<<endl;break;
	case'6':cout<<"diesciseis "<<endl;break;
	case'7':cout<<"diescisiete "<<endl;break;
	case'8':cout<<"diesciocho "<<endl;break;
	case'9':cout<<"diescinueve "<<endl;break;
	}break;
	case'2':if(num[(i-(p+2))+1]=='0') cout<<"veinte "<<endl;
	else cout<<"veinti"<<endl; break;
	case'3':cout<<"treinta "<<endl; if(num[(i-1)-p]!='0') cout<<"y "<<endl; break;
	case'4':cout<<"cuarenta "<<endl; if(num[(i-1)-p]!='0') cout<<"y "<<endl; break;
	case'5':cout<<"cincuenta "<<endl; if(num[(i-1)-p]!='0') cout<<"y "<<endl; break;
	case'6':cout<<"secenta "<<endl; if(num[(i-1)-p]!='0') cout<<"y "<<endl; break;
	case'7':cout<<"setenta "<<endl; if(num[(i-1)-p]!='0') cout<<"y "<<endl; break;
	case'8':cout<<"ochenta "<<endl; if(num[(i-1)-p]!='0') cout<<"y "<<endl; break;
	case'9':cout<<"noventa "<<endl; if(num[(i-1)-p]!='0') cout<<"y "<<endl; break;
	}
/*unidades*/
	if(num[i-(p+2)]!='1')
	switch(num[(i-1)-p])
	{
	case'1':if(p>=3) cout<<"un "<<endl;
	else cout<<"uno"<<endl;
	break;
	case'2':cout<<"dos "<<endl;break;
	case'3':cout<<"tres "<<endl;break;
	case'4':cout<<"cuatro "<<endl;break;
	case'5':cout<<"cinco "<<endl;break;
	case'6':cout<<"seis "<<endl;break;
	case'7':cout<<"siete "<<endl;break;
	case'8':cout<<"ocho "<<endl;break;
	case'9':cout<<"nueve "<<endl;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) cout<<"millon "<<endl;
	else if(p==6) cout<<"millones "<<endl;
	if(p==3 && num[p]!='0'|| p==3 && num[p+1]!='0' || p==3 && num[p+2]!='0')cout<<"mil "<<endl;
	p-=3;
	}
	getchar();
	return 0;
	}
Muchisimas gracias a todos.