Ir ao conteúdo

Posts recomendados

Postado

Eu estou desenvolvendo um programa de termodinâmica, e criei um menu de divisão das equações. O meu problema é o seguinte:

Se o usuário quiser fazer uma conversão de escala termométrica, por exemplo, ele vai selecionar o menu 1, e no final do cálculo ele vai dizer "Digite 0 para sair do programa ou qualquer outro número para continuar". Só que se continuar, ele volta para a opção 1, que no caso é opção de equação de conversão de escalas. Eu quero que após o final do cálculo, se o usuário quiser continuar, que ele volte para o menu principal, e não para a mesma opção que ele resolveu calcular no início.

 

Vou colocar uma parte do programa aqui:

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
float R, Q, qmin, massa, c, deltat, tinicial, tfinal, Ql, l, K, A, e, h, tau, pressao, deltav, vinicial, vfinal, deltau, uinicial, ufinal, deltah, hinicial, hfinal;
int calculo, calculo_r, cont=0, i=0;

printf("\n____________ Termodinamica ____________\n");
printf("\n  (Sistema Internacional de Unidades)\n");
printf("\n\n------------ Menu ------------\n\n");
printf("1 - Transferencia de Escalas Termometricas\n\n");
printf("2 - Calor Sensivel\n\n");
printf("3 - Calor Latente\n\n");
printf("4 - Transferencia de Calor - Parede Plana (Lei de Fourier)\n\n"); 
printf("5 - Transferencia de Calor - Fluxo Fluido (Lei de Newton)\n\n");
printf("6 - Trabalho sob Pressao Constante\n\n");
printf("7 - Energia Interna\n\n");
printf("8 - Entalpia\n\n");
printf("9 - Transferencia de Calor por Resistencias Associadas:\n");
printf("\n\nDigite o numero da Equacao que deseja calcular:  \n");
scanf("%d", &calculo);

//Para scanf
//{
//%s=pra string
//%d ou %i = pra numeros inteiros [no printf]
//%d=somente numeros inteiros no scanf
//%i=numeros decimais, octais e hexadecimais no scanf
//%f=pra float
//}

while(calculo==1)
{
    int escala;
    float rankine, celsius, fht, kelvin;
    printf("Conversao de Escalas Termometricas\n\n\n");
    printf("\n1. Rankine\n2. Celsius\n3. Fahrenheit\n4. Kelvin\n\n");
        //°R=(°C+273,15)*1,8
        //°R=KELVIN P/ RANKINE
        //°R=°F+459,67
            //°C=K-273
            //°C=(°F-32)/1,8
            //°C=(°R-491,67)/1,8
                //K=°C+273
                //K=(((°F-32)/9)*5)+273
                //K=RANKINE P/ KELVIN
                    //°F=(1,8*C)+32
                    //°F=(((K-273)/5)*9)+32
                    //°F=RANKINE P/ FAHRENHEIT
    calculo=0;
    printf("Digite o numero da Escala que deseja converter: \n");
    scanf("%d", &escala);
    while(escala==1)
    {
    	printf("\n\nEscala Rankine\n\n");
    	printf("\n\n\nDigite o valor da Temperatura em R: \n");
    	scanf("%f", &rankine);
    	celsius=(rankine-491,67)/1,8;
    	fht= 1+1;
    	kelvin=1+1;
    	printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, kelvin);
    	escala=0;

    }
    while(escala==2)
    {
    	printf("\n\nEscala Celsius\n\n");
    	printf("\n\n\nDigite o valor da Temperatura em °C: \n");
    	scanf("%f", &celsius);
    	rankine=1+1;
    	fht=1+1;
    	kelvin=1+1;
    	printf("\n\nO Valor da Temperatura em °C, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", rankine, fht, kelvin);
    	escala=0;
		
    }
     while(escala==3)
    {
    	printf("\n\nEscala Fahrenheit\n\n");
    	printf("\n\n\nDigite o valor da Temperatura em °F: \n");
    	scanf("%f", &fht);
    	celsius=1+1;
    	rankine=1+1;
    	kelvin=1+1;
    	printf("\n\nO Valor da Temperatura em °F, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, rankine, kelvin);
    	escala=0;

	}
     while(escala==4)
    {
    	printf("\n\nEscala Kelvin\n\n");
    	printf("\n\n\nDigite o valor da Temperatura em K: \n");
    	scanf("%f", &kelvin);
    	celsius=1+1;
    	fht=1+1;
    	rankine=1+1;
    	printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, rankine);
    	escala=0;

    }
printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
scanf("%d", &calculo);		
if(calculo==0)
		{
		  calculo=0;
		}
		else
        {

		    calculo=1;    	
    }
    
}

while(calculo==2)
{
	printf("Calor Sensivel\n\n\n");
	//Q=m*c*ΔT
	printf("\nDigite o valor da Massa (em gramas):  ");
	scanf("%f", &massa);
	printf("\nDigite o valor do calor especifico da substancia (em cal/g°C):  ");
	scanf("%f", &c);
	printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
	scanf("%f", &tinicial);
	printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
	scanf("%f", &tfinal);
	deltat=tfinal-tinicial;
	Q=massa*c*deltat;
	printf("\n\n\nO valor da Quantidade de Calor Sensivel e %4.4f cal", Q);
	printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
	scanf("%d", &calculo);
	if(calculo==0)
		{
		  calculo=0;
		}
		else
        {

		    calculo=2;
		}
		
}

 

  • Amei 1
Postado

Adicionei 1 opção para Sair no menu, substituí todos os while por if, e coloquei um único do-while englobando tudo, agora sai quando calculo é igual a 0.

 

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
    float R, Q, qmin, massa, c, deltat, tinicial, tfinal, Ql, l, K, A, e, h, tau, pressao, deltav, vinicial, vfinal, deltau, uinicial, ufinal, deltah, hinicial, hfinal;
    int calculo, calculo_r, cont=0, i=0;

    do {
        printf("\n____________ Termodinamica ____________\n");
        printf("\n  (Sistema Internacional de Unidades)\n");
        printf("\n\n------------ Menu ------------\n\n");
        printf("1 - Transferencia de Escalas Termometricas\n\n");
        printf("2 - Calor Sensivel\n\n");
        printf("3 - Calor Latente\n\n");
        printf("4 - Transferencia de Calor - Parede Plana (Lei de Fourier)\n\n");
        printf("5 - Transferencia de Calor - Fluxo Fluido (Lei de Newton)\n\n");
        printf("6 - Trabalho sob Pressao Constante\n\n");
        printf("7 - Energia Interna\n\n");
        printf("8 - Entalpia\n\n");
        printf("9 - Transferencia de Calor por Resistencias Associadas:\n\n");
        printf("0 - Sair\n")
        printf("\n\nDigite o numero da Equacao que deseja calcular:  \n");
        scanf("%d", &calculo);
        //Para scanf
        //{
        //%s=pra string
        //%d ou %i = pra numeros inteiros [no printf]
        //%d=somente numeros inteiros no scanf
        //%i=numeros decimais, octais e hexadecimais no scanf
        //%f=pra float
        //}

        if(calculo==1)
        {
            int escala;
            float rankine, celsius, fht, kelvin;
            printf("Conversao de Escalas Termometricas\n\n\n");
            printf("\n1. Rankine\n2. Celsius\n3. Fahrenheit\n4. Kelvin\n\n");
            //°R=(°C+273,15)*1,8
            //°R=KELVIN P/ RANKINE
            //°R=°F+459,67
            //°C=K-273
            //°C=(°F-32)/1,8
            //°C=(°R-491,67)/1,8
            //K=°C+273
            //K=(((°F-32)/9)*5)+273
            //K=RANKINE P/ KELVIN
            //°F=(1,8*C)+32
            //°F=(((K-273)/5)*9)+32
            //°F=RANKINE P/ FAHRENHEIT
            calculo=0;
            printf("Digite o numero da Escala que deseja converter: \n");
            scanf("%d", &escala);
            if(escala==1)
            {
                printf("\n\nEscala Rankine\n\n");
                printf("\n\n\nDigite o valor da Temperatura em R: \n");
                scanf("%f", &rankine);
                celsius=(rankine-491,67)/1,8;
                fht= 1+1;
                kelvin=1+1;
                printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, kelvin);
                escala=0;

            }
            if(escala==2)
            {
                printf("\n\nEscala Celsius\n\n");
                printf("\n\n\nDigite o valor da Temperatura em °C: \n");
                scanf("%f", &celsius);
                rankine=1+1;
                fht=1+1;
                kelvin=1+1;
                printf("\n\nO Valor da Temperatura em °C, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", rankine, fht, kelvin);
                escala=0;

            }
            if(escala==3)
            {
                printf("\n\nEscala Fahrenheit\n\n");
                printf("\n\n\nDigite o valor da Temperatura em °F: \n");
                scanf("%f", &fht);
                celsius=1+1;
                rankine=1+1;
                kelvin=1+1;
                printf("\n\nO Valor da Temperatura em °F, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, rankine, kelvin);
                escala=0;

            }
            if(escala==4)
            {
                printf("\n\nEscala Kelvin\n\n");
                printf("\n\n\nDigite o valor da Temperatura em K: \n");
                scanf("%f", &kelvin);
                celsius=1+1;
                fht=1+1;
                rankine=1+1;
                printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, rankine);
                escala=0;

            }
            
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);
            
            if(calculo==0)
            {
                calculo=0;
            }
            else
            {

                calculo=1;
            }
            
        }

        if(calculo==2)
        {
            printf("Calor Sensivel\n\n\n");
            //Q=m*c*ΔT
            printf("\nDigite o valor da Massa (em gramas):  ");
            scanf("%f", &massa);
            printf("\nDigite o valor do calor especifico da substancia (em cal/g°C):  ");
            scanf("%f", &c);
            printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
            scanf("%f", &tinicial);
            printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
            scanf("%f", &tfinal);
            deltat=tfinal-tinicial;
            Q=massa*c*deltat;
            
            printf("\n\n\nO valor da Quantidade de Calor Sensivel e %4.4f cal", Q);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);
            
            if(calculo==0)
            {
                calculo=0;
            }
            else
            {

                calculo=2;
            }
            
        }
    } while (calculo != 0)
    
    return 0;
}

 

  • Curtir 2
Postado
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
    float R, Q, qmin, massa, c, deltat, tinicial, tfinal, Ql, l, K, A, e, h, tau, pressao, deltav, vinicial, vfinal, deltau, uinicial, ufinal, deltah, hinicial, hfinal;
    int calculo, calculo_r, cont=0, i=0;

    do {
        printf("\n____________ Termodinamica ____________\n");
        printf("\n  (Sistema Internacional de Unidades - Equacoes com precisao de 2 Casas Decimais)\n");
        printf("\n\n------------ Menu ------------\n\n");
        printf("1 - Transferencia de Escalas Termometricas\n\n");
        printf("2 - Calor Sensivel\n\n");
        printf("3 - Calor Latente\n\n");
        printf("4 - Transferencia de Calor - Parede Plana (Lei de Fourier)\n\n");
        printf("5 - Transferencia de Calor - Fluxo Fluido (Lei de Newton)\n\n");
        printf("6 - Trabalho sob Pressao Constante\n\n");
        printf("7 - Energia Interna\n\n");
        printf("8 - Entalpia\n\n");
        printf("9 - Transferencia de Calor por Resistencias Associadas:\n\n");
        printf("0 - Sair do Programa\n");
        printf("\n\nDigite o numero da Equacao que deseja calcular:  \n");
        scanf("%d", &calculo);
        //Para scanf
        //{
        //%s=pra string
        //%d ou %i = pra numeros inteiros [no printf]
        //%d=somente numeros inteiros no scanf
        //%i=numeros decimais, octais e hexadecimais no scanf
        //%f=pra float
        //}

        if(calculo==1)
        {
            int escala;
            float rankine, celsius, fht, kelvin;
            printf("Conversao de Escalas Termometricas\n\n\n");
            printf("\n1. Rankine\n2. Celsius\n3. Fahrenheit\n4. Kelvin\n\n");
            //°R=(°C+273,15)*1,8
            //°R=KELVIN P/ RANKINE
            //°R=°F+459,67
            //°C=K-273
            //°C=(°F-32)/1,8
            //°C=(°R-491,67)/1,8
            //K=°C+273
            //K=(((°F-32)/9)*5)+273
            //K=RANKINE P/ KELVIN
            //°F=(1,8*C)+32
            //°F=(((K-273)/5)*9)+32
            //°F=RANKINE P/ FAHRENHEIT
            calculo=0;
            printf("Digite o numero da Escala que deseja converter: \n");
            scanf("%d", &escala);
            if(escala==1)
            {
                printf("\n\nEscala Rankine\n\n");
                printf("\n\n\nDigite o valor da Temperatura em R: \n");
                scanf("%f", &rankine);
                celsius=(rankine-491,67)/1,8;
                fht= 1+1;
                kelvin=1+1;
                printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, kelvin);
                escala=0;

            }
            if(escala==2)
            {
                printf("\n\nEscala Celsius\n\n");
                printf("\n\n\nDigite o valor da Temperatura em °C: \n");
                scanf("%f", &celsius);
                rankine=1+1;
                fht=1+1;
                kelvin=1+1;
                printf("\n\nO Valor da Temperatura em °C, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", rankine, fht, kelvin);
                escala=0;

            }
            if(escala==3)
            {
                printf("\n\nEscala Fahrenheit\n\n");
                printf("\n\n\nDigite o valor da Temperatura em °F: \n");
                scanf("%f", &fht);
                celsius=1+1;
                rankine=1+1;
                kelvin=1+1;
                printf("\n\nO Valor da Temperatura em °F, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, rankine, kelvin);
                escala=0;

            }
            if(escala==4)
            {
                printf("\n\nEscala Kelvin\n\n");
                printf("\n\n\nDigite o valor da Temperatura em K: \n");
                scanf("%f", &kelvin);
                celsius=1+1;
                fht=1+1;
                rankine=1+1;
                printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, rankine);
                escala=0;

            }
            
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);
            
        }

        if(calculo==2)
        {
            printf("Calor Sensivel\n\n\n");
            //Q=m*c*ΔT
            printf("\nDigite o valor da Massa (em gramas):  ");
            scanf("%f", &massa);
            printf("\nDigite o valor do calor especifico da substancia (em cal/g°C):  ");
            scanf("%f", &c);
            printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
            scanf("%f", &tinicial);
            printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
            scanf("%f", &tfinal);
            deltat=tfinal-tinicial;
            Q=massa*c*deltat;
            
            printf("\n\n\nO valor da Quantidade de Calor Sensivel e %2.2f cal", Q);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);
            
        }
        while(calculo==3)
{
	printf("Calor Latente\n\n\n");
	//Ql=m*L
	printf("\nDigite o valor da massa (em gramas): ");
	scanf("%f", &massa);
	printf("\nDigite o valor da Constante de proporcionalidade (em cal/g): ");
	scanf("%f", &l);
	Ql=massa*l;
	printf("\n\n\nO valor da Quantidade de Calor Latente e %2.2f cal", Ql);
	printf("\nDigite 0 para sair ou qualquer outro numero para continuar:\n");
	scanf("%d", &calculo);
	
}

while(calculo==4)
{
	printf("Lei de Fourier - Transferencia de Calor [Parede Plana]\n\n\n");
	//q=(K*A*ΔT)/e
	printf("\nDigite o valor da Constante (em W/m.K): ");
	scanf("%f", &K);
	printf("\nDigite o valor da Area (em metros quadrados): ");
	scanf("%f", &A);
	printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
	scanf("%f", &tinicial);
	printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
	scanf("%f", &tfinal);
	printf("\nDigite o valor da Espessura (em metros): ");
	scanf("%f", &e);
	deltat=tfinal-tinicial;
	qmin=(K*A*deltat)/e;
	printf("\n\n\nO valor da taxa de Transferencia de calor por Conducao e %2.2f Watts", qmin);
	printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
	scanf("%d", &calculo);

}
while(calculo==5)
{
	printf("Lei de Newton - Transferencia de Calor [Fluxo Fluido]\n\n\n");
	//q=h*A*ΔT
	printf("\nDigite o valor da Constante (em W/m^2.K): ");
	scanf("%f", &h);
	printf("\nDigite o valor da Area (em metros): ");
	scanf("%f", &A);
	printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
	scanf("%f", &tinicial);
	printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
	scanf("%f", &tfinal);
	deltat=tfinal-tinicial;
	qmin=h*A*deltat;
	printf("\n\n\nO valor do Coeficiente de Conveccao e %2.2f Watts", qmin);
	printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
	scanf("%d", &calculo);

}
while(calculo==6)
{
	printf("Trabalho sob Pressao Constante\n\n\n");
	//τ=P*ΔV
	printf("\nDigite o valor da Pressao (em Pascal): ");
	scanf("%f", &pressao);
	printf("\nDigite o valor do Volume inicial (em metro cubico): ");
	scanf("%f", &vinicial);
	printf("\nDigite o valor do Volume final (em metro cubico): ");
	scanf("%f", vfinal);
	deltav=vfinal-vinicial;
	tau=pressao*deltav;
	printf("\n\n\nO Trabalho realizado foi de %2.2f Joule", tau);
	printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
	scanf("%d", &calculo);

}
while(calculo==7)
{
	printf("Energia Interna\n\n\n");
	//ΔU=Q-τ
	printf("\nDigite o valor do Calor (em Joule): ");
	scanf("%f", &Q);
	printf("\nDigite o valor do Trabalho (em Joule): ");
	scanf("%f", &tau);
	deltau=Q-tau;
	printf("\n\n\nO Valor da Variacao de Energia Interna Interna e igual a %2.2f Joule", deltau);
	printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
	scanf("%d", &calculo);

}
while(calculo==8)
{
	printf("Entalpia\n\n\n");
	//ΔH=ΔU-τ
	printf("Digite o Valor da Energia Inicial (em Joule): ");
	scanf("%f", &uinicial);
	printf("\nDigite o valor da Energia Final (em Joule): ");
	scanf("%f", &ufinal);
	printf("Digite o valor do Trabalho (em Joule): ");
	scanf("%f", &tau);
	deltau=ufinal-uinicial;
	deltah=deltau-tau;
	printf("\n\n\nO Valor da Variacao da Entalpia e igual a %2.2f Joule", deltah);
	printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
	scanf("%d", &calculo);

}
while(calculo==9)
{
	printf("Transferencia de Calor por Resistencias Associadas\n\n\n");
	//Resistência Térmica Parede Plana: R=e/(K*A)
	//Resistência Térmica Fluxo: R=1/(h*A)
	//Varias Resistências em Série: q(n)=(ΔT(n))/Rt
	    //Rt=Somatorio das Resistencias: Σ R(n)
	//Varias Resistências em Paralelo: q(n)=(ΔT(n))/(1/(Rt)
	    //(1/Rt)=Somatorio do Inverso das Resistencias: Σ (1/R(n))
	printf("1. Resistencia Termica Parede Plana\n\n");
	printf("2. Resistencia Termica Fluxo\n\n");
	printf("3. Varias Resistencias em Serie\n\n");
	printf("4. Varias Resistencias em Paralelo\n\n");
	printf("Digite o numero da Equacao que deseja Calcular:\n");
	scanf("%d", &calculo_r);
	while(calculo_r==1)
	{
		printf("\n\nResistencia Termica Parede Plana\n\n\n");
		//R=e/(K*A)
		printf("\nDigite o valor da Espessura (em metros): ");
		scanf("%f", &e);
		printf("\nDigite o valor da Condutividade Termica (em W/m.K): ");
		scanf("%f", &K);
		printf("\nDigite o valor da Area (em metros quadrados): ");
		scanf("%f", &A);
		R=(e/(K*A));
		printf("\n\nO valor da Resistencia e: %2.2f K/W", &R);
		calculo_r=0;
		
		
	}
	while(calculo_r==2)
	{
		printf("\n\nResistencia Termica Fluxo\n\n\n");
		//R=1/(h*A)
		printf("\nDigite o valor da Constante (em W/m^2.K) ");
		scanf("%f", &h);
		printf("\nDigite o valor da Area (em metros quadrados): ");
		scanf("%f", &A);
		R=1/(h*A);
		printf("\n\nO valor da Resistencia e: %2.2f K/W", &R);
		calculo_r=0;
		
	}
	while(calculo_r==3)
	{
	    int i, num_r;
	    float Rt=0;
		printf("\n\nVarias Resistencias Associadas em Serie\n\n\n");
		//q=(ΔT)/R(n)
		printf("\nDigite o Numero de Resistencias que estão associadas em Serie: ");
		scanf("%d", &num_r);
		float R[num_r];
		Rt=0;
		for(i=1; i<=num_r; i++){
		printf("\n\nInsira o valor da Resistencia (em K/W):\n");
		cin >> R[i]; 
		Rt=Rt+(R[i]);
		}
		printf("\nDigite o valor da Temperatura Inicial (em Kelvin): ");
		cin >> tinicial;
		printf("\nDigite o valor da Temperatura Final (em Kelvin): ");
		cin >> tfinal;
		deltat=tfinal-tinicial;
		qmin=(deltat)/(Rt);
		cout << "\n\nO valor do q e:" << qmin << " Watts" << "\n";
		calculo_r=0;

	}
    while(calculo_r==4)
	{
	    int i, num_r;
	    float Rt=0;
		printf("\n\nVarias Resistencias Associadas em Paralelo\n\n\n");
		//q=((Δt(n))/(1/(R(n)))
		printf("\nDigite o Numero de Resistencias que estão associadas em Paralelo: ");
		scanf("%d", &num_r);
		float R[num_r];
		Rt=0;
		for(i=1; i<=num_r; i++){
		printf("\n\nInsira o valor da Resistencia (em K/W):\n");
		cin >> R[i]; 
		Rt=Rt+(1/(R[i]));
		}
		printf("\nDigite o valor da Temperatura Inicial (em Kelvin): ");
		cin >> tinicial;
		printf("\nDigite o valor da Temperatura Final (em Kelvin): ");
		cin >> tfinal;
		deltat=tfinal-tinicial;
		qmin=(deltat)/(Rt);
		cout << "\n\nO valor do q e:" << qmin << " Watts" << "\n";
		calculo_r=0;

	}
printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
scanf("%d", &calculo);

}
    } while (calculo != 0);
    
    return 0;
}

Certo!! Resolvesse uma parte do meu problema, a única coisa que to tentando implementar mas só deu erro, foi na parte dos sub-menus, como no caso do "1. Transferência de Escalas" e "9. Transferência de calor por resistências associadas". Estas duas opções abrem um sub-menu com mais opções para o usuário fazer o cálculo, eu gostaria que no final do cálculo o usuário tivesse a opção de voltar pro sub-menu, voltar para o menu principal, ou digitar 0 para sair, é possivel?

 

 

Postado

Mais troca de whiles por if/else ifs, mais do whiles, etc, etc...

 

Notei que está misturando bibliotecas do C (stdio.h, math.h) com do C++ (iostream), está programando em C ou C++?

 

E também está usando printf e scanf junto com cin e cout, se vai programar em C++ é melhor usar os recursos do C++ (cin e cout).

 

#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
    float R, Q, qmin, massa, c, deltat, tinicial, tfinal, Ql, l, K, A, e, h, tau, pressao, deltav, vinicial, vfinal, deltau, uinicial, ufinal, deltah, hinicial, hfinal;
    int calculo, calculo_r, cont=0, i=0;

    int escala;
    float rankine, celsius, fht, kelvin;

    do {
        printf("\n____________ Termodinamica ____________\n");
        printf("\n  (Sistema Internacional de Unidades - Equacoes com precisao de 2 Casas Decimais)\n");
        printf("\n\n------------ Menu ------------\n\n");
        printf("1 - Transferencia de Escalas Termometricas\n\n");
        printf("2 - Calor Sensivel\n\n");
        printf("3 - Calor Latente\n\n");
        printf("4 - Transferencia de Calor - Parede Plana (Lei de Fourier)\n\n");
        printf("5 - Transferencia de Calor - Fluxo Fluido (Lei de Newton)\n\n");
        printf("6 - Trabalho sob Pressao Constante\n\n");
        printf("7 - Energia Interna\n\n");
        printf("8 - Entalpia\n\n");
        printf("9 - Transferencia de Calor por Resistencias Associadas:\n\n");
        printf("0 - Sair do Programa\n");
        printf("\n\nDigite o numero da Equacao que deseja calcular:  \n");
        scanf("%d", &calculo);
        //Para scanf
        //{
        //%s=pra string
        //%d ou %i = pra numeros inteiros [no printf]
        //%d=somente numeros inteiros no scanf
        //%i=numeros decimais, octais e hexadecimais no scanf
        //%f=pra float
        //}

        if(calculo==1)
        {
            do {
                printf("Conversao de Escalas Termometricas\n\n\n");
                printf("\n1. Rankine\n2. Celsius\n3. Fahrenheit\n4. Kelvin\n0.Voltar\n\n");
                //°R=(°C+273,15)*1,8
                //°R=KELVIN P/ RANKINE
                //°R=°F+459,67
                //°C=K-273
                //°C=(°F-32)/1,8
                //°C=(°R-491,67)/1,8
                //K=°C+273
                //K=(((°F-32)/9)*5)+273
                //K=RANKINE P/ KELVIN
                //°F=(1,8*C)+32
                //°F=(((K-273)/5)*9)+32
                //°F=RANKINE P/ FAHRENHEIT
                calculo=0;
                printf("Digite o numero da Escala que deseja converter: \n");
                scanf("%d", &escala);
                else if(escala==1)
                {
                    printf("\n\nEscala Rankine\n\n");
                    printf("\n\n\nDigite o valor da Temperatura em R: \n");
                    scanf("%f", &rankine);
                    celsius=(rankine-491,67)/1,8;
                    fht= 1+1;
                    kelvin=1+1;
                    printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, kelvin);
                    escala=0;

                }
                else if(escala==2)
                {
                    printf("\n\nEscala Celsius\n\n");
                    printf("\n\n\nDigite o valor da Temperatura em °C: \n");
                    scanf("%f", &celsius);
                    rankine=1+1;
                    fht=1+1;
                    kelvin=1+1;
                    printf("\n\nO Valor da Temperatura em °C, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", rankine, fht, kelvin);
                    escala=0;

                }
                else if(escala==3)
                {
                    printf("\n\nEscala Fahrenheit\n\n");
                    printf("\n\n\nDigite o valor da Temperatura em °F: \n");
                    scanf("%f", &fht);
                    celsius=1+1;
                    rankine=1+1;
                    kelvin=1+1;
                    printf("\n\nO Valor da Temperatura em °F, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, rankine, kelvin);
                    escala=0;

                }
                else if(escala==4)
                {
                    printf("\n\nEscala Kelvin\n\n");
                    printf("\n\n\nDigite o valor da Temperatura em K: \n");
                    scanf("%f", &kelvin);
                    celsius=1+1;
                    fht=1+1;
                    rankine=1+1;
                    printf("\n\nO Valor da Temperatura em R, equivale a:\n%2.2f°C\n%2.2f°F\n%2.2fK", celsius, fht, rankine);
                    escala=0;

                }
                if(escala != 0) {
                    printf("\nDigite 0 para voltar ao menu principal ou 1 para continuar\n");
                    scanf("%d", &escala);
                }

            } while(escala!=0);
        }

        else if(calculo==2)
        {
            printf("Calor Sensivel\n\n\n");
            //Q=m*c*ΔT
            printf("\nDigite o valor da Massa (em gramas):  ");
            scanf("%f", &massa);
            printf("\nDigite o valor do calor especifico da substancia (em cal/g°C):  ");
            scanf("%f", &c);
            printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
            scanf("%f", &tinicial);
            printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
            scanf("%f", &tfinal);
            deltat=tfinal-tinicial;
            Q=massa*c*deltat;

            printf("\n\n\nO valor da Quantidade de Calor Sensivel e %2.2f cal", Q);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);

        }
        else if(calculo==3)
        {
            printf("Calor Latente\n\n\n");
            //Ql=m*L
            printf("\nDigite o valor da massa (em gramas): ");
            scanf("%f", &massa);
            printf("\nDigite o valor da Constante de proporcionalidade (em cal/g): ");
            scanf("%f", &l);
            Ql=massa*l;
            printf("\n\n\nO valor da Quantidade de Calor Latente e %2.2f cal", Ql);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar:\n");
            scanf("%d", &calculo);

        }

        else if(calculo==4)
        {
            printf("Lei de Fourier - Transferencia de Calor [Parede Plana]\n\n\n");
            //q=(K*A*ΔT)/e
            printf("\nDigite o valor da Constante (em W/m.K): ");
            scanf("%f", &K);
            printf("\nDigite o valor da Area (em metros quadrados): ");
            scanf("%f", &A);
            printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
            scanf("%f", &tinicial);
            printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
            scanf("%f", &tfinal);
            printf("\nDigite o valor da Espessura (em metros): ");
            scanf("%f", &e);
            deltat=tfinal-tinicial;
            qmin=(K*A*deltat)/e;
            printf("\n\n\nO valor da taxa de Transferencia de calor por Conducao e %2.2f Watts", qmin);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);

        }
        else if(calculo==5)
        {
            printf("Lei de Newton - Transferencia de Calor [Fluxo Fluido]\n\n\n");
            //q=h*A*ΔT
            printf("\nDigite o valor da Constante (em W/m^2.K): ");
            scanf("%f", &h);
            printf("\nDigite o valor da Area (em metros): ");
            scanf("%f", &A);
            printf("\nDigite o valor da Temperatura Inicial (em °C ou K): ");
            scanf("%f", &tinicial);
            printf("\nDigite o valor da Temperatura Final (em °C ou K): ");
            scanf("%f", &tfinal);
            deltat=tfinal-tinicial;
            qmin=h*A*deltat;
            printf("\n\n\nO valor do Coeficiente de Conveccao e %2.2f Watts", qmin);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);

        }
        else if(calculo==6)
        {
            printf("Trabalho sob Pressao Constante\n\n\n");
            //τ=P*ΔV
            printf("\nDigite o valor da Pressao (em Pascal): ");
            scanf("%f", &pressao);
            printf("\nDigite o valor do Volume inicial (em metro cubico): ");
            scanf("%f", &vinicial);
            printf("\nDigite o valor do Volume final (em metro cubico): ");
            scanf("%f", vfinal);
            deltav=vfinal-vinicial;
            tau=pressao*deltav;
            printf("\n\n\nO Trabalho realizado foi de %2.2f Joule", tau);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);

        }
        else if(calculo==7)
        {
            printf("Energia Interna\n\n\n");
            //ΔU=Q-τ
            printf("\nDigite o valor do Calor (em Joule): ");
            scanf("%f", &Q);
            printf("\nDigite o valor do Trabalho (em Joule): ");
            scanf("%f", &tau);
            deltau=Q-tau;
            printf("\n\n\nO Valor da Variacao de Energia Interna Interna e igual a %2.2f Joule", deltau);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);

        }
        else if(calculo==8)
        {
            printf("Entalpia\n\n\n");
            //ΔH=ΔU-τ
            printf("Digite o Valor da Energia Inicial (em Joule): ");
            scanf("%f", &uinicial);
            printf("\nDigite o valor da Energia Final (em Joule): ");
            scanf("%f", &ufinal);
            printf("Digite o valor do Trabalho (em Joule): ");
            scanf("%f", &tau);
            deltau=ufinal-uinicial;
            deltah=deltau-tau;
            printf("\n\n\nO Valor da Variacao da Entalpia e igual a %2.2f Joule", deltah);
            printf("\nDigite 0 para sair ou qualquer outro numero para continuar\n");
            scanf("%d", &calculo);

        }
        else if(calculo==9)
        {
            do {
                printf("Transferencia de Calor por Resistencias Associadas\n\n\n");
                //Resistência Térmica Parede Plana: R=e/(K*A)
                //Resistência Térmica Fluxo: R=1/(h*A)
                //Varias Resistências em Série: q(n)=(ΔT(n))/Rt
                //Rt=Somatorio das Resistencias: Σ R(n)
                //Varias Resistências em Paralelo: q(n)=(ΔT(n))/(1/(Rt)
                //(1/Rt)=Somatorio do Inverso das Resistencias: Σ (1/R(n))
                printf("1. Resistencia Termica Parede Plana\n\n");
                printf("2. Resistencia Termica Fluxo\n\n");
                printf("3. Varias Resistencias em Serie\n\n");
                printf("4. Varias Resistencias em Paralelo\n\n");
                printf("0. Voltar\n\n");
                printf("Digite o numero da Equacao que deseja Calcular:\n");
                scanf("%d", &calculo_r);
                if(calculo_r==1)
                {
                    printf("\n\nResistencia Termica Parede Plana\n\n\n");
                    //R=e/(K*A)
                    printf("\nDigite o valor da Espessura (em metros): ");
                    scanf("%f", &e);
                    printf("\nDigite o valor da Condutividade Termica (em W/m.K): ");
                    scanf("%f", &K);
                    printf("\nDigite o valor da Area (em metros quadrados): ");
                    scanf("%f", &A);
                    R=(e/(K*A));
                    printf("\n\nO valor da Resistencia e: %2.2f K/W", &R);
                    //calculo_r=0;


                }
                else if(calculo_r==2)
                {
                    printf("\n\nResistencia Termica Fluxo\n\n\n");
                    //R=1/(h*A)
                    printf("\nDigite o valor da Constante (em W/m^2.K) ");
                    scanf("%f", &h);
                    printf("\nDigite o valor da Area (em metros quadrados): ");
                    scanf("%f", &A);
                    R=1/(h*A);
                    printf("\n\nO valor da Resistencia e: %2.2f K/W", &R);
                    //calculo_r=0;

                }
                else if(calculo_r==3)
                {
                    int i, num_r;
                    float Rt=0;
                    printf("\n\nVarias Resistencias Associadas em Serie\n\n\n");
                    //q=(ΔT)/R(n)
                    printf("\nDigite o Numero de Resistencias que estão associadas em Serie: ");
                    scanf("%d", &num_r);
                    float R[num_r];
                    Rt=0;
                    for(i=1; i<=num_r; i++) {
                        printf("\n\nInsira o valor da Resistencia (em K/W):\n");
                        cin >> R[i];
                        Rt=Rt+(R[i]);
                    }
                    printf("\nDigite o valor da Temperatura Inicial (em Kelvin): ");
                    cin >> tinicial;
                    printf("\nDigite o valor da Temperatura Final (em Kelvin): ");
                    cin >> tfinal;
                    deltat=tfinal-tinicial;
                    qmin=(deltat)/(Rt);
                    cout << "\n\nO valor do q e:" << qmin << " Watts" << "\n";
                    //calculo_r=0;

                }
                else if(calculo_r==4)
                {
                    int i, num_r;
                    float Rt=0;
                    printf("\n\nVarias Resistencias Associadas em Paralelo\n\n\n");
                    //q=((Δt(n))/(1/(R(n)))
                    printf("\nDigite o Numero de Resistencias que estão associadas em Paralelo: ");
                    scanf("%d", &num_r);
                    float R[num_r];
                    Rt=0;
                    for(i=1; i<=num_r; i++) {
                        printf("\n\nInsira o valor da Resistencia (em K/W):\n");
                        cin >> R[i];
                        Rt=Rt+(1/(R[i]));
                    }
                    printf("\nDigite o valor da Temperatura Inicial (em Kelvin): ");
                    cin >> tinicial;
                    printf("\nDigite o valor da Temperatura Final (em Kelvin): ");
                    cin >> tfinal;
                    deltat=tfinal-tinicial;
                    qmin=(deltat)/(Rt);
                    cout << "\n\nO valor do q e:" << qmin << " Watts" << "\n";
                    //calculo_r=0;

                }
                if (calculo_r != 0) {
                    printf("\nDigite 0 para voltar ao menu principal ou 1 para continuar\n");
                    scanf("%d", &calculo_r);
                }
            } while (calculo_r != 0);
        }
    } while (calculo != 0);

    return 0;
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!