Hola a todos perdón por molestarlos pero tengo un problema lo que pasa es que estoy haciendo un programa que lea 30 números y los convierta a grados kelvin, lo tengo que hacer por medio de funciones y arreglos, esto es lo que llevo:
#include <stdio.h>
#define MAX 30
void introducir(float *grados)
{
int i;
float cel[50];
printf("Dame 30 valores de grados a convertir en grados celsius:\n");
for(i=0;i<MAX;i++){
printf("Numero %d >>>> ",i+1);
scanf("%f",&cel);
while(getchar()!='\n');
}
}
float kelvin(float *grados)
{
int i;
float kel[50];
for(i=0;i<MAX;i++){
kel = &grados-273.15;
return kel;
}
}
int main()
{
float far[50],kel[50],grados[50];
introducir(grados);
printf("Grados Kelvin:\n");
printf("%f",kelvin(grados));
return 0;
}
El problema es que cuando compilo me sale el siguiente error: :-X :-X error: invalid operands to binary - (have 'float *' and 'double')| a que se debe ese error y como puedo corregirlo :huh: :huh: :huh: muchas gracias por su ayuda
Para convertir grados Celsius a Kelvin la formula seria
Kelvin = Celsius + 273.15
Tu codigo con las debidas correcciónes
#include <stdio.h>
#define MAX 30
void introducir(float *grados){
int i;
printf("Dame 30 valores de grados a convertir en grados celsius:\n");
for( i = 0; i < MAX; i++ ){
printf("Numero %d >>>> ",i+1);
scanf(" %f", &grados[i]);
}
}
void kelvin(float *grados, float * kel){
int i;
for( i = 0; i < MAX; i++ ){
kel[i] = grados[i] + 273.15;
printf("%f\n", kel[i]);
}
}
int main(void)
{
float kel[MAX], grados[MAX];
introducir(grados);
printf("Grados Kelvin:\n\n");
kelvin(grados, kel);
return 0;
}
Debes publicar tu codigo con las etiquetas GeSHi C de lo contrario algunos caracteres no aparecen
Saludos
Muchas gracias Blaster me ayudaste bastante gracias y claro voy a investigar como poner el código fuente en etiquetas GeSHi C ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
Cita de: honguitoSan en 8 Mayo 2014, 21:34 PM
y claro voy a investigar como poner el código fuente en etiquetas GeSHi C ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
Cuando quieras poner un código, donde están las opciones para dar formato al texto (parte superior donde escribes), hay un desplegable a la derecha que pone GeSHi :rolleyes:
Saludos
Mmmmm, perfecto pero yo opino que si sólo quiere imprimir los valores en Kelvin no es necesario el segundo argumento en la función kelvin(). Bastaría con:
#include <stdio.h>
#define MAX 30
void kelvin(float *grados ){
int i, float kel;
for( i = 0; i < MAX; i++ ){
kel = grados[i] + 273.15;
printf("%f\n", kel);
}
}
}
Inesperada la salida que obtengo con el código de
Blaster:
Citar
Dame 3 valores de grados a convertir en grados celsius:
Numero 1 >>>> 100
Numero 2 >>>> 200
Numero 3 >>>> 300
Grados Kelvin:
373.149994
473.149994
573.150024
No así con el de
yoel_alejandro:
Citar
Dame 3 valores de grados a convertir en grados celsius:
Numero 1 >>>> 100
Numero 2 >>>> 200
Numero 3 >>>> 300
Grados Kelvin:
373.150000
473.150000
573.150000
Análogo al de usar %g en lugar de %f:
void kelvin(float *grados, float * kel){
int i;
for( i = 0; i < MAX; i++ )
printf("%g\n", kel[i] = grados[i] + 273.15);
}
Citar
Dame 3 valores de grados a convertir en grados celsius:
Numero 1 >>>> 100
Numero 2 >>>> 200
Numero 3 >>>> 300
Grados Kelvin:
373.15
473.15
573.15
¿Alguna sugerencia a este comportamiento del %f?.
¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Cita de: leosansan en 22 Mayo 2014, 22:34 PM
¿Alguna sugerencia a este comportamiento del %f?.
En el modo de operar del especificador %f no hay nada estraño, debes tener encuenta que son diferentes y cada uno procesa el valor con diferente precisiónes, obten mas información al respecto en esta pagina
http://support.microsoft.com/kb/43392/es (http://support.microsoft.com/kb/43392/es)
Saludos