Tengo lo siguiente
#include <stdio.h>
#include <stdlib.h>
int main()
{
float fahr;
float celsius;
//limites de las tablas superior y u inferior
float min;
float max;
float aumento;
//letreros de la tabla
char temp_celsius = "fah";
char temp_fahr = "cels";
min = 0.0;
max = 300.0;
aumento = 20.0;
//temp_fahr = 'fah';
//temp_celsius = 'cels';
fahr = min;
while (fahr <= max);
celsius = ((fahr - 32.0) * (5.0/9.0));
printf("%3.25c %6.5c/n", temp_fahr, temp_celsius);
printf("%3.25f %6.5f/n", fahr, celsius);
fahr = fahr + aumento;
system("PAUSE");
return 0;
}
Mi pregunta es que problema hay ya que he mirado por todo google la forma de resolver el problema que viene de intentar declarar un char y asignarle una constante, en el código hay dos formas una es declarar char por el nombre de la declaración solo y poner de constante una palabra, otra es lo mismo pero según internet asignar el valor de la constante en la misma declaración (no se si se dice así).
El mensaje del compilador de GCC de la terminal de linux dice:
termometro.c:19:26: warning: initialization makes integer from pointer without a cast [-Wint-conversion]
char temp_celsius = "fah";
^
termometro.c:20:23: warning: initialization makes integer from pointer without a cast [-Wint-conversion]
char temp_fahr = "cels";
ya no se donde mirar y gracias.
Los errores son porque estas asignando string a variables char, tu haces esto:
char a = "hola";
Y debería ser así:
char a = 'h';
Entonces tendría que poner
char temp_Fahr[20] = Fahr ?
Al menos eso es lo que me salía en esta página de google
http://recursostic.educacion.es/observatorio/web/es/software/programacion/972-tipos-de-datos
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Entonces tendría que poner
char temp_Fahr[20] = Fahr ?
Al menos eso es lo que me salía en esta página de google
http://recursostic.educacion.es/observatorio/web/es/software/programacion/972-tipos-de-datos
Así es, y Fahr debe ir entre comillas dobles :D
Puedo dar el tema como solucionado, o sigue fallando?
Si cierra el tema y gracias, continuaré probando cosas ;)
En linux al compilar con gcc con el comando que cito abajo, compila, crea el ejecutable y no salta ningún error.
gcc termometro.c -o termometro
Pero al ejecutarlo con ./termometro no sale nada y se queda en negro como si fuese un bucle infinito pero sin mostrar nada en pantalla.
He probado más ejecutables y no es problema de compilación.
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Si cierra el tema y gracias, continuaré probando cosas ;)
En linux al compilar con gcc con el comando que cito abajo, compila, crea el ejecutable y no salta ningún error.
gcc termometro.c -o termometro
Pero al ejecutarlo con ./termometro no sale nada y se queda en negro como si fuese un bucle infinito pero sin mostrar nada en pantalla.
He probado más ejecutables y no es problema de compilación.
Te he arreglado un poquito el programa.
#include <stdio.h>
#include <stdlib.h>
int main(){
float fahr;
float celsius;
//limites de las tablas superior y u inferior
float min;
float max;
float aumento;
//letreros de la tabla
char temp_celsius[20] = "fah";
char temp_fahr[20] = "cels";
min = 0.0;
max = 300.0;
aumento = 20.0;
//temp_fahr = 'fah';
//temp_celsius = 'cels';
fahr = min;
while (fahr <= max){
celsius = ((fahr - 32.0) * (5.0/9.0));
printf("%s %s \n", temp_fahr, temp_celsius);
printf("%3.25f %6.5f \n", fahr, celsius);
fahr = fahr + aumento;
}
system("PAUSE");
return 0;
}
Tenías dos fallos:
1º while(); - Por eso te daba el bucle infinito.
2º printf("%c"); - Intentabas imprimir un string como un caracter.
Si ya está bien y funciona como tú querías avisame que de el post como solucionado.
Me he dado cuenta por lo del bucle en la consola gracias de todas formas es lo que tiene ir aprendiendo.
Ya se puede cerrar el tema
Ya he acabado ya con esta parte gracias a todos por su ayuda. Pongo el código por si quiere alguien tenerlo de ejemplo
#include <stdio.h>
int main()
{
float fahr;
float celsius;
//limites de las tablas superior y u inferior
float min;
float max;
float aumento;
//letreros de la tabla
char temp_celsius[20] = "Cº";
char temp_fahr[20] = "F";
min = 0.0;
max = 300.0;
aumento = 20.0;
printf("%3.25s %25.5s\n", temp_fahr, temp_celsius);
fahr = min;
while (fahr <= max)
{
celsius = ((fahr - 32.0) * (5.0/9.0));
printf("%3.25f %6.5f\n", fahr, celsius);
fahr = fahr + aumento;
}
return 0;
}
Posdata: Si os fijais arriba en la primera versión si obviais el bucle infinito de while por no poner las llaves el printf [ printf("%3.25s %25.5s\n", temp_fahr, temp_celsius); ] lo tenía dentro del bucle por lo que se repetía junto a la impresión de los resultados y salía:
F Cº
0.0000000000000000000000000 -17.77778
F Cº
20.0000000000000000000000000 -6.66667
F Cº
40.0000000000000000000000000 4.44444
F Cº
60.0000000000000000000000000 15.55556
F Cº
....
cuando en realidad es así:
F Cº
0.0000000000000000000000000 -17.77778
20.0000000000000000000000000 -6.66667
40.0000000000000000000000000 4.44444
60.0000000000000000000000000 15.55556
80.0000000000000000000000000 26.66667
...
Además de que he modificado los puntos de desplazamiento para hacer coincidir o intentarlo poner Cº encima de sus correspondientes cálculos.
Posdata final ya: No hay forma de limitar los ceros para que no salgan tantos
Gracias a todos.
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Ya he acabado ya con esta parte gracias a todos por su ayuda. Pongo el código por si quiere alguien tenerlo de ejemplo
#include <stdio.h>
int main()
{
float fahr;
float celsius;
//limites de las tablas superior y u inferior
float min;
float max;
float aumento;
//letreros de la tabla
char temp_celsius[20] = "Cº";
char temp_fahr[20] = "F";
min = 0.0;
max = 300.0;
aumento = 20.0;
printf("%3.25s %25.5s\n", temp_fahr, temp_celsius);
fahr = min;
while (fahr <= max)
{
celsius = ((fahr - 32.0) * (5.0/9.0));
printf("%3.25f %6.5f\n", fahr, celsius);
fahr = fahr + aumento;
}
return 0;
}
Posdata: Si os fijais arriba en la primera versión si obviais el bucle infinito de while por no poner las llaves el printf [ printf("%3.25s %25.5s\n", temp_fahr, temp_celsius); ] lo tenía dentro del bucle por lo que se repetía junto a la impresión de los resultados y salía:
F Cº
0.0000000000000000000000000 -17.77778
F Cº
20.0000000000000000000000000 -6.66667
F Cº
40.0000000000000000000000000 4.44444
F Cº
60.0000000000000000000000000 15.55556
F Cº
....
cuando en realidad es así:
F Cº
0.0000000000000000000000000 -17.77778
20.0000000000000000000000000 -6.66667
40.0000000000000000000000000 4.44444
60.0000000000000000000000000 15.55556
80.0000000000000000000000000 26.66667
...
Además de que he modificado los puntos de desplazamiento para hacer coincidir o intentarlo poner Cº encima de sus correspondientes cálculos.
Posdata final ya: No hay forma de limitar los ceros para que no salgan tantos
Gracias a todos.
Los ceros los controlas con el .25 que tienes en el printf.
#include <stdio.h>
int main()
{
float fahr;
float celsius;
//limites de las tablas superior y u inferior
float min;
float max;
float aumento;
//letreros de la tabla
char temp_celsius[5] = "Cº";
char temp_fahr[5] = "F";
min = 0.0;
max = 300.0;
aumento = 20.0;
printf(" %s\t\t %s\n", temp_fahr, temp_celsius);
fahr = min;
while (fahr <= max)
{
celsius = ((fahr - 32.0) * (5.0/9.0));
printf("%3.2f\t\t%6.2f\n", fahr, celsius);
fahr = fahr + aumento;
}
return 0;
}
Enviado desde mi Lenovo A7600-F mediante Tapatalk