#include <iostream>
#include <cmath>
using namespace std;
//****************** .h ***********************
//#ifndef GAS_H
//#define GAS_H
class Gas
{
public:
Gas();
~Gas();
friend void LeerPropiedades(Gas &gas);
friend void MostrarPropiedades(Gas &gas);
friend double CalcularTemperaturaFinalAdiabatico(Gas &gas, double P_final);
friend double CalcularTrabajoAdiabatico(Gas &gas, double P_final, double V_final);
private:
double P; // Presión en atm
double V; // Volumen en litros
double T; // Temperatura en Kelvin
double gamma; // Razón de calores específicos Cp/Cv
};
//#endif
//****************** .cpp ***********************
Gas::Gas() //: P(0), V(0), T(0), gamma(1.4)
{
P=V=T=0;
gamma=1.4;
}
Gas::~Gas()
{
cout << "Proceso adiabático fin." << endl;
}
void LeerPropiedades(Gas &gas)
{
cout << "Introduce la presión inicial (atm): ";
cin >> gas.P;
cout << "Introduce el volumen inicial (litros): ";
cin >> gas.V;
cout << "Introduce la temperatura inicial (K): ";
cin >> gas.T;
cout << "Introduce la relación de calores específicos (Cp/Cv): ";
cin >> gas.gamma;
}
void MostrarPropiedades(Gas &gas)
{
cout << "Presión: " << gas.P << " atm" << endl;
cout << "Volumen: " << gas.V << " litros" << endl;
cout << "Temperatura: " << gas.T << " K" << endl;
cout << "Gamma (Cp/Cv): " << gas.gamma << endl;
}
double CalcularTemperaturaFinalAdiabatico(Gas &gas, double P_final)
{
// Relación adiabática: P1 * V1^gamma = P2 * V2^gamma
double T_final = gas.T * pow(P_final / gas.P, (gas.gamma - 1) / gas.gamma);
return T_final;
}
double CalcularTrabajoAdiabatico(Gas &gas, double P_final, double V_final)
{
// Trabajo en un proceso adiabático: W = (P2 * V2 - P1 * V1) / (1 - gamma)
double W = (P_final * V_final - gas.P * gas.V) / (1 - gas.gamma);
return W;
}
//****************** .main ***********************
int main()
{
Gas gas;
int opc;
double P_final, V_final;
cout << "===================================================" << endl;
cout << "* PROCESOS ADIABÁTICOS: CLASES AMIGAS *" << endl;
cout << "===================================================" << endl;
cout << "Presiona ENTER para continuar..." << endl;
cin.get();
do {
cout << "****************** MENU ******************" << endl;
cout << "1. Leer propiedades iniciales del gas" << endl;
cout << "2. Mostrar propiedades del gas" << endl;
cout << "3. Calcular temperatura final (proceso adiabático)" << endl;
cout << "4. Calcular trabajo realizado en el proceso adiabático" << endl;
cout << "0. Salir" << endl;
cout << "Elige una opción: ";
cin >> opc;
switch (opc)
{
case 1:
LeerPropiedades(gas);
break;
case 2:
MostrarPropiedades(gas);
break;
case 3:
cout << "Introduce la presión final (atm): ";
cin >> P_final;
cout << "Temperatura final: " << CalcularTemperaturaFinalAdiabatico(gas, P_final) << " K" << endl;
break;
case 4:
cout << "Introduce la presión final (atm): ";
cin >> P_final;
cout << "Introduce el volumen final (litros): ";
cin >> V_final;
cout << "Trabajo realizado: " << CalcularTrabajoAdiabatico(gas, P_final, V_final) << " J" << endl;
break;
case 0:
cout << "Saliendo del programa..." << endl;
break;
default:
cout << "Opción no válida." << endl;
}
cout << endl;
} while (opc != 0);
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: