#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;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: