Programación General > C/C++
problema con codigo C++
(1/1)
aneroeancoh:
Hola amigos, tengo que hacer un codigo que dado el valor de un producto, calcule el cambio (devuelto) dependiendo el billete o moneda que entregue.
tengo este codigo, pero no se si sea cuestion de librerias o de algun error en los array ya que no compila o se queda mostrando un valor basura sin fin.
lo traduci yo personalmente desde c#, pero evidentemente hay un error que no me permite que el programa se ejecute bien.
--- Código: C++ ---#include <iostream>#include <stdlib.h>#include <string.h>#include <math.h>using namespace std; int main(string[]){int bri;bri [15]={ 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10};// Identificando el arregloint guardar;guardar [10];// Estbleciendo el limite del nuevo arreglo double total, pago, devuelta;//Declarandolas como reales porque puede tolerar valores decimalesint r; cout<<"n Programa para calcular la devuelta ideal de una compra:";cout<<"nIntroduzca el Total de su compra: $ ";cin>>total;cout<<" nMe Pagara con un billete de :$";cin>>pago; devuelta = pago - total;//Operacion r = 0;while (devuelta != 0 && r != 10)// Ahora el bucle de la devuelta (Como fue expuesto en clase){while (devuelta >= bri){guardar[r]++;// El contador de la cantidad de billetesdevuelta -= bri;}r++;} for (r = 0; r < bri; r++)// El contador de los tipos de billetes{if (guardar[r] != 0)//Condicionante para saber que no se quedara debiendo!!cout<<guardar<< " billetes de " << " " << bri;}} muchas gracias
ssaammuu:
--- Código: C++ ---int bri;bri [15]={ 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10};// Identificando el arregloint guardar;guardar [10];// Estbleciendo el limite del nuevo arreglo No se puede declarar una variable y despues convertirla en un array
--- Código: C++ ---while (devuelta >= bri)devuelta -= bri;for (r = 0; r < bri; r++)cout<<guardar<< " billetes de " << " " << bri; En estas líneas, estás usando arrays como si de variables individuales se trataran, entonces, en lugar de estar usando el contenido de las variables, estás usando la dirección en memoria de el primer elemento del array.
ssaammuu:
Si no consigues hacer que funcione, intenta este código.
--- Código: C++ --- #include <iostream>#include <stdlib.h>#include <string.h>#include <math.h> using namespace std; int main(string[]){int bri []={ 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10};// Identificando el arregloconst int numDeBilletes=sizeof(bri)/sizeof(bri[0]);//tamaño de pilaint guardar [numDeBilletes];// Estbleciendo el limite del nuevo arreglofor (int i=0;i<numDeBilletes;i++)guardar[i]=0;//reiniciar a 0 double total, pago, devuelta;//Declarandolas como reales porque puede tolerar valores decimales cout<<"n Programa para calcular la devuelta ideal de una compra:";cout<<"nIntroduzca el Total de su compra: $ ";cin>>total;cout<<" nMe Pagara con un billete de :$";cin>>pago; devuelta = pago - total;//Operacion int r=0;while (devuelta > 10)// 10 porque es el billete más pequeño{while (devuelta >= bri[r]){guardar[r]++;// El contador de la cantidad de billetesdevuelta -= bri[r];}r++;} for (r = 0; r < numDeBilletes; r++)// El contador de los tipos de billetes{if (guardar[r] != 0)//Condicionante para saber que no se quedara debiendo!!cout<<guardar[r]<< " billetes de " << " " << bri[r]<<endl;}}
Estaría bien que hacieras algunos chequeos, como mínimo para que el pago sea mayor que la compra... ^_^
aneroeancoh:
Muchisimas gracias, en efecto los errores se producen es porque trancribi ese codigo desde C# manualmente, y pues desconozco ese lenguaje, seguire intentando mas problemas asi para agarrar destreza.
:good: :good: :good: :good:
aneroeancoh:
--- Código: C++ ---#include <iostream>#include <stdlib.h>#include <string.h>#include <math.h> using namespace std; int fuc(string[]){int bri []={ 50000, 20000, 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10};// Identificando el arregloconst int numDeBilletes=sizeof(bri)/sizeof(bri[0]);//tamaño de pilaint guardar [numDeBilletes];// Estbleciendo el limite del nuevo arreglofor (int i=0;i<numDeBilletes;i++)guardar[i]=0;//reiniciar a 0 double total, pago, devuelta;//Declarandolas como reales porque puede tolerar valores decimales cout<<"nPrograma para calcular la vueltas de una compra: ";cout<<"nIntroduzca el Total de su compra: $";cin>>total;cout<<"nMe Pagara con un billete de: $";cin>>pago; devuelta = pago - total;//Operacion int r=0;while (devuelta > 10)// 10 porque es el billete más pequeño{while (devuelta >= bri[r]){guardar[r]++;// El contador de la cantidad de billetesdevuelta -= bri[r];}r++;} for (r = 0; r < numDeBilletes; r++)// El contador de los tipos de billetes{if (guardar[r] != 0)//Condicionante para saber que no se quedara debiendo!! cout<<guardar[r]<<" billetes de "<< bri[r]<<endl;}system ("pause");} int main (){ int total, pago, guardar, bri; system ("color 0A");//asdasdasd zZZz matrix effect cout<<"nPrograma para calcular la vueltas de una compra: ";cout<<"nIntroduzca el Total de su compra: $";cin>>total;cout<<"nMe Pagara con un billete de: $";cin>>pago;cout<<guardar[r]<<" billetes de "<< bri[r]<<endl; system ("pause"); return(0);}
si le quiero poner recursividad, que me haria falta para que se ejecute debidamente?
Navegación
Ir a la versión completa