[C con Clase] no puedo usar una funcion mas de 2 veces sino explota el programa
Jadder Antonio Moya Urbáez
jadder.antonio en gmail.com
Dom Mar 13 06:41:23 CET 2011
hola a todos tengo un problema, estoy haciendo un programa y tengo una funcion
pero si esa funcion la utilizo mas de 2 veces me explota el programa,
y no es una funcion recursiva.
1-ejecuten el programa y funciona
2- descomenten cualquiera de las dos llamada a la funcion o ambas, que
estan al final del main
//conversion(millones);
//conversion(miles);
el programa funciona siempre y cuando dejen solamente 2 fucniones
no entiendo por que revienta el programa con mas llamada a la misma funcion.
aqui les dejo el codigo
#include <iostream>
#include <string.h>
#include <cstring>
using namespace std;
string conversion(string);
main(){
int longitud =0;
char *monto = new char [13];
string cadena, temporal;
string cientos, miles, millones, centavos;
cout << "Digite su monto: ";
cin >> monto;
cadena = monto;
longitud = strlen(monto);
if(longitud<12){ //creo una cadena temporal rellenando con los
valores que faltan
for(int x=0;x<(12-longitud);x++){
temporal+= '0';
}
}
temporal += monto; //suma la cadena monto a la temporal
cout << temporal << endl;
//cout << monto << endl;
// cout << longitud << endl;
millones = temporal.substr(0,3);
miles = temporal.substr(3,3);
cientos = temporal.substr(6,3);
centavos = temporal.substr(9);
cout << endl;
//conversion(millones);
//cout << "Millones ";
//conversion(miles);
//cout << "Mil " << endl;
conversion(cientos);
conversion(centavos);
cout << "Centavos. ";
cout<< endl;
}
string conversion(string numero){
//cout << "aqui: " << numero << endl;
bool c = true;
char *cant = new char [4];
for(int x=0;x<=2;x++){ //creo este bucle para convertir de
string a char
cant[x] = numero[x]; // y ponder usar un swithc que trabaja
con constantes
}
switch(cant[0]){
case '9': cout << "Novecientos "; c=true; break;
case '8': cout << "Ochocientos "; c=true; break;
case '7': cout << "Setecientos "; c=true; break;
case '6': cout << "Seiscientos "; c=true; break;
case '5': cout << "Quinientos "; c=true; break;
case '4': cout << "Cuatrocientos "; c=true; break;
case '3': cout << "Trecientos "; c=true; break;
case '2': cout << "Docientos "; c=true; break;
case '1': cout << "Ciento "; c=true; break;
case '0': cout << ""; c=true; break;
case '.': cout << "con "; c=true; break;
default:
cout <<"defaul1 " ;
c=true; break;
}
switch(cant[1]){
case '9': cout << "Noventa "; c=true; break;
case '8': cout << "Ochenta "; c=true; break;
case '7': cout << "Setenta "; c=true; break;
case '6': cout << "Sesenta "; c=true; break;
case '5': cout << "Cincuenta "; c=true; break;
case '4': cout << "Cuarenta "; c=true; break;
case '3': cout << "Trenta "; c=true; break;
case '2': cout << "Veinte "; c=true; break;
case '1': cout << "Novecientos "; c=true; break;
case '0': cout << ""; c=true; break;
default:
cout <<"defaul2 " ;
c=true; break;
}
if(c == true){
cout << "y ";
c = false;
}
switch(cant[2]){
case '9': cout << "Nueve "; c=true; break;
case '8': cout << "Ocho "; c=true; break;
case '7': cout << "Siete "; c=true; break;
case '6': cout << "Seis "; c=true; break;
case '5': cout << "Cinco "; c=true; break;
case '4': cout << "Cuatro "; c=true; break;
case '3': cout << "Tres "; c=true; break;
case '2': cout << "Dos "; c=true; break;
case '1': cout << "Uno "; c=true; break;
case '0': cout << ""; c=true; break;
default:
cout <<"defaul " << endl;
c=true; break;
}
cant = "";
}
Más información sobre la lista de distribución Cconclase