El siguiente ejemplo muestra cómo pasar a distintas escalas la temperatura ingresada
Primero se pedirá por consola que el usuario ingrese un valor de temperatura.
Segundo se pedirá por consola que el usuario ingrese un número del 1 al 3, para indicar a que escala pertenecer la temperatura.
Tercero, la función si anidada evaluará a que función llamar, dichas funciones contienen las fórmulas correspondientes para la conversión según sea lo solicitado, y graban los nuevos datos, aquí se utiliza punteros para pasar el vector dentro de las funciones.
Cuatro, el programa sigue corriendo dentro de la función principal main, y se muestra por pantalla los datos de las tres temperaturas.
Al pie de este post se encuentran las fórmulas de conversión
Código:
#include <stdio.h>
typedef struct{ // define un tipo de datos llamado temperatura
float datos[3];
}temperatura;
// Fórmulas
void de_celsius (temperatura *vector1){ // Esta funcion graba los datos en grados Kelvin y Grados Fahrenheit
vector1->datos[1] = 9 * vector1->datos[0] / 5 + 32;
vector1->datos[2] = vector1->datos[0] + 273.15;
}
void de_fahrenheit (temperatura *vector1){ // Esta funcion graba los datos en grados Kelvin y Grados Celsius
vector1->datos[0] = (5 * vector1->datos[1] -160)/9;
vector1->datos[2] = (5 * vector1->datos[1] -160)/9 + 273.15;
}
void de_kelvin (temperatura *vector1){ // Esta funcion graba los datos en grados Celsius y Grados Fahrenheit
vector1->datos[0] = vector1->datos[2] - 273.15;
vector1->datos[1] = (9 * ( vector1->datos[2] -273.15))/5 + 32;
}
int main() {
temperatura vector1; // Se define que vector1 es de tipo temperatura
float dato; // se utiliza esta variable para almacenar temporalmente el dato de temperatura ingresado
int escala; // se utiliza esta variable para almacenar temporalmente el valor para indicar la escala
printf("Ingrese la temperatura \n");
scanf("%f",&dato); // Se solicita al usuario ingresar la temperatura por consola
printf("\n En que escala esta el dato? \n Ingrese un numero para indicar la escala a la cual corresponde \n 1 para Grados Celsius 'Grados Centigrados' \n 2 para Grados Fahrenheit \n 3 para Grados Kelvin \n");
scanf("%d",&escala); // Se solicita al usuario ingresar un número del 1 al 3 correspondiente a la escala
// si anidados que evaluan el dato ingresado como referencia de escala y luego llaman a una funcion
if (escala == 1) {
vector1.datos[0] = dato;
de_celsius(&vector1);
} else if (escala == 2) {
vector1.datos[1] = dato;
de_fahrenheit(&vector1);
} else if (escala == 3){
vector1.datos[2] = dato;
de_kelvin(&vector1);
}
// Muestra por pantalla las temperaturas
printf("\n La temperatura en Grados Celsius es %g \n La temperatura en Grados Fahrenheit es %g \n La temperatura en Grados Kelvin es %g", vector1.datos[0],vector1.datos[1],vector1.datos[2]);
return 0;
}
Clic para ampliar las fórmulas de Conversión de temperatura