bueno pues me han encargado un menu de conversiones de divisas, he hecho el programa en c, pero debido a que aun no conozco mucho del lenguje siento que hay muchas cosas que se pueden simplificar en mi programa, espero me puedan ayudar, y explicar como puedo mejorarlo :D, muchas gracias
Esta hecho en C, con el compilador Dev C++.
#include <stdio.h>
#include <windows.h>
#define dolar 12.47
#define yen 0.16
#define euro 17.98
int menuPrincipal(void){//muestra el menu
int retorno, i;
system("cls");
printf("\n\n\n\t\t%c", 201);
for(i = 0; i < 30; i++) {
printf("%c", 205);
}
printf("%c\n", 187);
printf("\t\t%c", 186);
printf(" Conversor de divisas %c\n", 186);
printf("\t\t%c ============================ %c\n", 186, 186);
printf("\t\t%c 1.- De dolares a pesos %c\n", 186, 186);
printf("\t\t%c 2.- De yens a pesos %c\n", 186, 186);
printf("\t\t%c 3.- De Euro a pesos %c\n", 186, 186);
printf("\t\t%c 4.- Salir %c\n", 186, 186);
printf("\t\t%c", 200);
for(i = 0; i < 30; i++) {
printf("%c", 205);
}
printf("%c\n", 188);
printf("\n\n\t\t Opcion ---------> ");
scanf("%d", &retorno);
return(retorno);
}
int main(int argi, char** argc) {
float pesos, cant; // definicion de variable flotante
int i = 0;
while(i < 4) {
i = menuPrincipal(); // ejecuta la funcion menu
switch(i) {
case 1: { //de dolares a pesos
printf("\n\n\t\tCual es la cantidad de pesos a cambiar? -> ");
scanf("%f", &pesos);
cant = pesos / dolar;
printf("\t\tLa cantidad de dolares es: -> %f\n\n\t", cant);
system("PAUSE");
break;
}
case 2: { //de yens a pesos
printf("\n\n\t\tCual es la cantidad de pesos a cambiar? -> ");
scanf("%f", &pesos);
cant = pesos/yen;
printf("\t\tLa cantidad de yens es: -> %f\n\n\t", cant);
system("PAUSE");
break;
}
case 3: { //de euro a pesos
printf("\n\n\t\tCual es la cantidad de pesos a cambiar? -> ");
scanf("%f", &pesos);
cant = pesos/euro;
printf("\t\tLa cantidad de euros es: -> %.2f\n\n\t", cant);
system("pause");
break;
}
default: {
printf("Este numero no esta dentro del menu, porfavor elige otro\n\n\t\t");
system("pause");
break;
}
}
}
return 0;
}
Aunque yo programo en C++ lo veo bastante bien para no usar clases o estructuras, lo que si creo es que hay demasiados "printf", puedes usar el mismo para imprimir en pantalla varias cosas en renglones diferentes usando: "\n", asi se simplificaría el programa.
Saludos.
Dev-C++ no es un compilador.
El programa se puede reducir bastante.
* Para empezar seria mejor eliminar las llamadas a 'system("pause")' ya que, siendo estrictos, no son parte del programa. Bien se utiliza la característica de "pausa automática" soportada por la mayoría de los IDEs (con excepción de Dev-C++) o bien se ejecuta mediante el interprete de comandos.
* No es necesario colocar llaves después de cada etiqueta y todos los casos, salvo el ultimo, inician con la impresión de la misma cadena (Se puede sacar del "switch").
Con esos mas otros cambios la función principal se puede reducir a:
int main(void)
{
char *moneda[] = {"dolares", "yens", "euros"};
float cambio[] = {dolar, yen, euro};
float pesos;
int i;
do {
i = menuPrincipal();
if (i >= 1 && i <= 3){
printf ("\n\n\t\tCual es la cantidad de pesos a cambiar? -> ");
scanf ("%f", &pesos);
printf ("\t\tLa cantidad de %s es: -> %.2f\n\n\t", moneda[i - 1], pesos / cambio[i - 1]);
}else
printf ("Este numero no esta dentro del menu, porfavor elige otro\n\n\t\t");
}while (i < 4);
return 0;
}
También debes decidir donde se debe validar la opción elegida por el usuario (función principal o en el menú).
Un saludo