Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Overlord9981 en Junio 22, 2016, 12:53:24 PM

Título: [SOLUCIONADO] Problema con programar en C
Publicado por: Overlord9981 en Junio 22, 2016, 12:53:24 PM
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.
Título: Re:Problema con programar en C
Publicado por: rollth en Junio 22, 2016, 01:30:01 PM
Los errores son porque estas asignando string a variables char, tu haces esto:

char a = "hola";

Y debería ser así:

char a = 'h';
Título: Re:Problema con programar en C
Publicado por: Overlord9981 en Junio 22, 2016, 01:36:38 PM
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
Título: Re:Problema con programar en C
Publicado por: rollth en Junio 22, 2016, 01:47:55 PM
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?
Título: Re:Problema con programar en C
Publicado por: Overlord9981 en Junio 22, 2016, 01:56:06 PM

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.
Título: Re:Problema con programar en C
Publicado por: rollth en Junio 22, 2016, 02:30:05 PM
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.
Título: Re:Problema con programar en C
Publicado por: Overlord9981 en Junio 22, 2016, 02:31:08 PM
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
Título: Re:Problema con programar en C
Publicado por: Overlord9981 en Junio 22, 2016, 02:42:46 PM
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.

Título: Re:[SOLUCIONADO] Problema con programar en C
Publicado por: BlackBlex en Junio 24, 2016, 01:15:59 PM


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