En el main se pone el esqueleto del programa
int main (void)
{
menu();
sentidoConversion();
reinicio();
return 0;
}
1. Hay muchas cosas que sobran
2. Llamas a una función dentro de otra, si quieres reutilizar algo te dará problemas
Estas 3 funciones sobranvoid limpiarBuffer (void) /*Limpia el buffer de entrada*/
{
while (getchar() != '\n');
}
void menu (void) /*Imprime un pequeño menú de bienvenida*/
{
printf("--->Conversor Julios <-> Electron-Voltios\n");
}
void limpiarPantalla (void) /*Limpia la pantalla de la consola del sistema*/
{
system("cls");
}
Estas creando una variable tipo char para almacenar un numerounsigned char eleccion = 0; /*Valor por defecto en 0*/
Esta cosa rara...scanf("%hhu", &eleccion);
En todos los scanf y algunos printf pones esto, si lo que quieres es coger o mostrar solo un decimal, se pone con puntoscanf("%lf", &J);
printf("%lg J = %lg Ev\n", J, Ev);
pero la simplicidad es buena para aprender
El código es muy enrevesado para ser simple y poder aprender
Pero bueno, lo que te digo de la función main es esto, quizás te funciona mejor este codigo#include <stdio.h>
#define CargaElectron 1.6e-19
float Julios_EV(float Julios); //Realiza la conversion de Julios a Electron-Voltios
float EV_Julios(float EV); //Realiza la conversion de Electron-Voltios a Julios
int main ()
{
int Opcion;
float Valor, Resultado;
printf("Conversor Julios <-> Electron-Voltios\n");
do
{
printf("\n [1] Julios -> Electron-Voltios"
"\n [2] Electron-Voltios -> Julios"
"\n [3] Salir");
printf("\n\nEscoje una opcion: ");
scanf("%d", &Opcion);
switch(Opcion)
{
case 1:
{
printf("\nCuantos Julios deseas convertir: ");
scanf("%f",&Valor);
Resultado = Julios_EV(Valor);
printf("\n\n%.2f Julios son %.2f EV\n",Valor,Resultado);
break;
}
case 2:
{
printf("\nCuantos EV deseas convertir: ");
scanf("%f",&Valor);
Resultado = EV_Julios(Valor);
printf("\n\n%.2f EV son %.2f Julios\n",Valor,Resultado);
break;
}
case 3:
{
break;
}
default:
{
printf("\nOpcion Incorrecta!\n"); //Error
break; //Salimos
}
}
}while(Opcion!=3);
return 0;
}
float Julios_EV(float Julios) //Realiza la conversion de Julios a Electron-Voltios
{
float EV;
EV = Julios/CargaElectron;
return EV;
}
float EV_Julios(float EV) //Realiza la conversion de Electron-Voltios a Julios
{
float Julios;
Julios = EV * CargaElectron;
return Julios;
}
Estoy seguro de que se puede optimizar mucho mas, pero para que te hagas una idea.
Saludos
ModificadoRevisa estas dos funciones, los valores que dan los printf, a ver si ves el errorvoid J_Ev (void) /*Realiza la conversion de Julios a Electron-Voltios*/
{
/*Declaración de variables*/
double J;
double Ev;
const double cargaElectron = 1.6e-19;
/*Trámites con el usuario*/
printf("Julios a convertir: ");
scanf("%lf", &J);
limpiarBuffer();
printf("Convirtiendo...\n");
/*Conversion*/
Ev = J/cargaElectron;
printf("%lg J = %lg Ev\n", J, Ev);
}
void Ev_J (void) /*Realiza la conversion de Electron-Voltios a Julios*/
{
/*Declaración de variables*/
double J;
double Ev;
const double cargaElectron = 1.6e-19;
/*Trámites con el usuario*/
printf("Electron-Voltios a convertir: ");
scanf("%lf", &Ev);
limpiarBuffer();
printf("Convirtiendo...\n");
/*Conversion*/
J = Ev*cargaElectron;
printf("%lg Ev = %lg J\n", J, Ev);
}
Pista, el último printf
Modificado 2
Por cierto...
const double cargaElectron = 1.6e-19;
Se declaran al inicioSaludos