elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa de divisas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa de divisas  (Leído 2,787 veces)
M-Stewart612

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Programa de divisas
« en: 8 Noviembre 2018, 06:56 am »

Sucede que estoy realizando un programa de Divisas, el cual recibe la información de la cantidad a convertir, de diferentes monedas. Después debe imprimir el reporte total que obtuvo por cada moneda; pero sucede que el reporte final no lo imprime, solo da el pantallaso y regresa a la primera parte

¿Qué debo hacer para qué se imprima la información?
Código
  1. [/#include <iostream>
  2. #include<stdlib.h>
  3. #include<stdio.h>
  4. #include <windows.h>
  5. using namespace std;
  6.  
  7. /*USD= 7.72, EUR= 8.80, CAD= 5.89, GBP= 10.03, CHF= 7.71, AUD=5.58 , NZD= 5.13*/  
  8.  
  9. int main(){
  10. string reporte,x;
  11. int opcion, monto, i;
  12.  
  13. string mon[7];
  14. double moneda[7],total;
  15. total=0;
  16. mon [0]="Dolar";
  17. mon [1]="Euro";
  18. mon [2]="Dolar Canadiense";
  19. mon [3]="Libra";
  20. mon [4]="Franco Suizo";
  21. mon [5]="Dolar Australiano";
  22. mon [6]="Dolar Neozelandes";
  23. for(i=0;i<7;i++){
  24.   moneda[i]=0;
  25.   }
  26. x="si";
  27.   do{
  28.   system("cls");
  29.   total=0;
  30.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  31. cout<<"\t \t \t  HAS INGRESADO AL REGISTRO DE DIVISAS";
  32. cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n"; cout<<"\n";
  33.   cout<<"Opciones: \n  \t 1. Dolar \n \t 2. Euro \n \t 3. Dolar Canadiense \n  \t 4. Libra \n \t 5. Franco Suizo \n \t 6. Dolar Australiano \n \t 7. Dolar Neozelandes"<<endl;
  34.   cout<<"Ingrese el numero de la opcion que desea: "<<endl; cin>>opcion;
  35.   switch (opcion){
  36.   case 1:
  37.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  38.   cout<<"Opcion selecionada: DOLAR"<<endl;
  39.   cout<<"Ingrese el monto que desea convertir: "; cin>>monto;
  40.   moneda[0]=moneda[0]+monto;
  41.   break;
  42. cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";  
  43.   case 2:
  44.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  45.   cout<<"Opcion selecionada: EURO"<<endl;
  46.   cout<<"Ingrese el monto que desea convertir: "; cin>>monto;
  47.   moneda[1]=moneda[1]+monto;
  48.   break;
  49.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  50.   case 3:
  51.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  52.   cout<<"Opcion selecionada: DOLAR CANADIENSE"<<endl;
  53.   cout<<"Ingrese el monto que desea convertir: "; cin>>monto;
  54.   moneda[2]=moneda[2]+monto;
  55.   break;
  56.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  57.   case 4:
  58.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  59.   cout<<"Opcion selecionada: LIBRA"<<endl;
  60.   cout<<"Ingrese el monto que desea convertir: "; cin>>monto;
  61.   moneda[3]=moneda[3]+monto;
  62.   break;
  63.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  64.   case 5:
  65.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  66.   cout<<"Opcion selecionada: FRANCO SUIZO"<<endl;
  67.   cout<<"Ingrese el monto que desea convertir: "; cin>>monto;
  68.   moneda[4]=moneda[4]+monto;
  69.   break;
  70.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  71.   case 6:
  72.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  73.   cout<<"Opcion selecionada: DOLAR AUSTRALIANO"<<endl;
  74.   cout<<"Ingrese el monto que desea convertir: ";
  75.   cin>>monto;
  76.   moneda[5]=moneda[5]+monto;
  77.   break;
  78.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  79.   case 7:
  80.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  81.   cout<<"Opcion selecionada: DOLAR NEOZELANDES"<<endl;
  82.   cout<<"Ingrese el monto que desea convertir: ";
  83.   cin>>monto;
  84.   moneda[6]=moneda[6]+monto;
  85.   break;
  86.   cout<<endl<<"|------------------------------------------------------------------------------------------------|"; cout<<"\n";
  87.   case 8 :{
  88.        x="no";
  89.   break;
  90.   }
  91.   default:
  92.   cout<<"Por favor elija una opcion valida ";
  93.   break;
  94.   }
  95.   cout<<"Desea ver el reporte final (si/no)";
  96.   cin>>reporte;
  97.   if (reporte=="si"){
  98.  
  99. /*IMPRIMIR EL REPORTE DE TRANSACCIONES*/
  100.  
  101.   for(i=0;i<7;i++){
  102.   cout<<"moneda "<<mon[i]<<endl;
  103.   cout<<"cantidad "<<moneda[i]<<endl;
  104.   if (i==0){
  105.   cout<<"cantidad en Quetzales "<<moneda[i]*7.72<<endl;
  106.   total=total+(moneda[i]*7.72);
  107.   }else if (i==1){
  108.   cout<<"cantidad en Quetzales "<<moneda[i]*8.8<<endl;
  109.   total=total+(moneda[i]*8.8);
  110.   } else if (i==2){
  111.   cout<<"cantidad en Quetzales "<<moneda[i]*5.89<<endl;
  112.   total=total+(moneda[i]*5.89);
  113.   }else if (i==3){
  114.   cout<<"cantidad en Quetzales "<<moneda[i]*10.03<<endl;
  115.   total=total+(moneda[i]*10.03);
  116.   }else if (i==4){
  117.   cout<<"cantidad en Quetzales "<<moneda[i]*7.7<<endl;
  118.   total=total+(moneda[i]*7.7);
  119.   }else if (i==5){
  120.   cout<<"cantidad en Quetzales "<<moneda[i]*5.55<<endl;
  121.   total=total+(moneda[i]*5.55);
  122.   }else if (i==6){
  123.   cout<<"cantidad en Quetzales "<<moneda[i]*5.13<<endl;
  124.   total=total+(moneda[i]*5.13);
  125.   }
  126.   }
  127.   cout<<"Total Invertido en Quetzales : "<<total<<endl;
  128.   }
  129.   }while(x=="si");
  130.  }]


« Última modificación: 8 Noviembre 2018, 06:59 am por M-Stewart612 » En línea

elgilun

Desconectado Desconectado

Mensajes: 17



Ver Perfil
Re: Programa de divisas
« Respuesta #1 en: 8 Noviembre 2018, 22:26 pm »

Puedo comentarte un par de cosas que veo.

1) Deberías poder usar un debugger, que es una herramienta (normalmente disponible desde el mismo editor de código o IDE). Usando un debugger podrás poner "puntos de parada", o como se llamen en tu pueblo, y seguir el flujo de ejecución del código, paso a paso, con lo que podrás ver claramente qué es lo que hace que el programa se comporte como se comporta. Debugger, todo el mundo los usa. No puedes llamarte programador si no los usas. No hay excusas.

2)
Citar
#include <iostream>
#include<stdlib.h>
O tu programa es C++ (<iostream>) o es C (<stdlib.h>); no puede ser las dos cosas. No puede, no, nunca. ¿Te han dicho que no sé qué sobre C/C++? Bueno, no, es mentira, o C o C++, decídete.

3)
Citar
/*USD= 7.72, EUR= 8.80, CAD= 5.89, GBP= 10.03, CHF= 7.71, AUD=5.58 , NZD= 5.13*/
Si tienes estas cosas ya definidas desde el principio, podrías declararlos como macros (lenguaje C) o como constantes (C++), pero recuerda decidirte primero si tu programa va a ser C o C++.

4) defines primero
Citar
double moneda[7]
y luego usas mon[0], mon[1], ... ? (¿necesitas una secretaria para esas tareas menores?)

5) if ... else if... else if... else... con pruebas de condición sobre enteros, debes usar switch / case.

Creo que ya corrigiendo estas cositas ya quedará.


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Programa de divisas
« Respuesta #2 en: 8 Noviembre 2018, 22:50 pm »

5) if ... else if... else if... else... con pruebas de condición sobre enteros, debes usar switch / case.

Estaba por comentarle cosas similares, pero me ganaste.

respecto al codigo tiene fallas e ineficiencias por ejemplo el siguiente codigo hace varias comprofaciones inecesarias.

Código:
  for(i=0;i<7;i++){
   cout<<"moneda "<<mon[i]<<endl;
   cout<<"cantidad "<<moneda[i]<<endl;
   if (i==0){
   cout<<"cantidad en Quetzales "<<moneda[i]*7.72<<endl;
   total=total+(moneda[i]*7.72);
   }else if (i==1){
   cout<<"cantidad en Quetzales "<<moneda[i]*8.8<<endl;
   total=total+(moneda[i]*8.8);
   } else if (i==2){
   cout<<"cantidad en Quetzales "<<moneda[i]*5.89<<endl;
   total=total+(moneda[i]*5.89);
   }else if (i==3){
   cout<<"cantidad en Quetzales "<<moneda[i]*10.03<<endl;
   total=total+(moneda[i]*10.03);
   }else if (i==4){
   cout<<"cantidad en Quetzales "<<moneda[i]*7.7<<endl;
   total=total+(moneda[i]*7.7);
   }else if (i==5){
   cout<<"cantidad en Quetzales "<<moneda[i]*5.55<<endl;
   total=total+(moneda[i]*5.55);
   }else if (i==6){
   cout<<"cantidad en Quetzales "<<moneda[i]*5.13<<endl;
   total=total+(moneda[i]*5.13);
   }
  }

Siendo que todo eso esta dentro de un for realmente i solo puede tener un valor a la vez por lo cual podrias poner TODO FUERA DEL FOR y ahorrarte las evaluaciones de la siguiente manera.

Código:
cout<<"moneda "<<mon[0]<<endl;
cout<<"cantidad "<<moneda[0]<<endl;
cout<<"cantidad en Quetzales "<<moneda[0]*7.72<<endl;
total=total+(moneda[0]*7.72);

cout<<"moneda "<<mon[1]<<endl;
cout<<"cantidad "<<moneda[1]<<endl;
cout<<"cantidad en Quetzales "<<moneda[1]*8.8<<endl;
total=total+(moneda[1]*8.8);


cout<<"moneda "<<mon[2]<<endl;
cout<<"cantidad "<<moneda[2]<<endl;
cout<<"cantidad en Quetzales "<<moneda[2]*5.89<<endl;
total=total+(moneda[2]*5.89);

cout<<"moneda "<<mon[3]<<endl;
cout<<"cantidad "<<moneda[3]<<endl;
cout<<"cantidad en Quetzales "<<moneda[3]*10.03<<endl;
total=total+(moneda[3]*10.03);

cout<<"moneda "<<mon[4]<<endl;
cout<<"cantidad "<<moneda[4]<<endl;
cout<<"cantidad en Quetzales "<<moneda[4]*7.7<<endl;
total=total+(moneda[4]*7.7);

cout<<"moneda "<<mon[5]<<endl;
cout<<"cantidad "<<moneda[5]<<endl;
cout<<"cantidad en Quetzales "<<moneda[5]*5.55<<endl;
total=total+(moneda[5]*5.55);

cout<<"moneda "<<mon[6]<<endl;
cout<<"cantidad "<<moneda[6]<<endl;
cout<<"cantidad en Quetzales "<<moneda[6]*5.13<<endl;
total=total+(moneda[6]*5.13);

O dentro del FOR pero ahorrandote los IF de igualmanera

Código
  1. float fix[7] = {7.72,8.80,5.89,10.03,7.71,5.58,5.13};
  2.  
  3. for(i=0;i<7;i++){
  4. cout<<"moneda "<<mon[i]<<endl;
  5. cout<<"cantidad "<<moneda[i]<<endl;
  6. cout<<"cantidad en Quetzales "<<moneda[i]*fix[i]<<endl;
  7. total=total+(moneda[i]*fix[i]);
  8. }
  9.  
  10.  
Este ultimo es el mas eficiente a mi manera de ver las cosas, sobre el por que no los imprime seria cuestion de que me expliques como  es que funciona esta parte del codigo. Yo se como funciona, pero si no entienda esa parte no sabras realmente que estas haciendo

Código:
if (reporte=="si"){
« Última modificación: 8 Noviembre 2018, 22:53 pm por AlbertoBSD » En línea

M-Stewart612

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Programa de divisas
« Respuesta #3 en: 9 Noviembre 2018, 01:27 am »

Muchísimas gracias a ambos, me sirvieron mucho sus observaciones para reparar los errores del programa  ;D ;D ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para hacer conversor de divisas
.NET (C#, VB.NET, ASP)
DYckon 1 3,239 Último mensaje 24 Septiembre 2011, 23:10 pm
por seba123neo
Microsoft incorpora Bitcoin al conversor de divisas de Bing
Noticias
wolfbcn 0 1,021 Último mensaje 11 Febrero 2014, 12:57 pm
por wolfbcn
Opera incluye un conversor de divisas en su última versión
Noticias
wolfbcn 0 1,371 Último mensaje 13 Diciembre 2016, 14:30 pm
por wolfbcn
Hay incertidumbre por el futuro de estas divisas digitales.
Noticias
wolfbcn 0 1,158 Último mensaje 10 Octubre 2017, 21:26 pm
por wolfbcn
Criptomoneda venezolana podrá ser canjeada por divisas
Noticias
wolfbcn 0 835 Último mensaje 23 Octubre 2019, 21:48 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines