[Curso] Introducción a la programación en C (IV)

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por m0skit0 »

Como ya te he dicho:

m0skit0 escribió:Una variable no puede ser real y entera al mismo tiempo. O es una cosa, o es otra.

Es decir, ya que float incluye int (float puede tomar valores de int y más) entonces debes ponerlos float.

m0skit0 escribió:Sólo cuando sea necesario float hay que declarar float.

Con esto me refiero a que no declares float en todos tus programas, sino sólo cuando haga falta (como en éste por ejemplo).
Imagen

Avatar de Usuario
Kracker
ViP Hordes
ViP Hordes
Mensajes: 1212
Registrado: 03 Sep 2009, 00:38
PSN ID: Mario_-Almada_-
Contactar:

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por Kracker »

Aqui lo hice asi (como te entendi).
Declare float

Código: Seleccionar todo

printf("El doble de la edad de Kracker mas es doble de la edad de Angelica es = %f\n", edad_Kracker * 2 + edad_Angelica * 2);


Sin agregar:

Código: Seleccionar todo

   float edad_Kracker = 24;
   float edad_Angelica = 21;


tampoco

Código: Seleccionar todo

   float edad_Kracker;
   float edad_Angelica;


solo tomando como referencia

Código: Seleccionar todo

   int edad_Kracker;
   int edad_Angelica;


Pero me da error al compilar!. :roll:
Imagen

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por m0skit0 »

Kracker, hermano, pon el código :roll:
Imagen

Avatar de Usuario
Kracker
ViP Hordes
ViP Hordes
Mensajes: 1212
Registrado: 03 Sep 2009, 00:38
PSN ID: Mario_-Almada_-
Contactar:

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por Kracker »

Código: Seleccionar todo

#include <stdio.h>

int main(int argc, char *argv[])
{
   int edad_Kracker;
   int edad_Angelica;
   
   
   edad_Kracker = 21;
   edad_Angelica = 18;
   printf("Edad de Kracker hace tiempo: %d\n", edad_Kracker);
   printf("Edad de Angelica hace tiempo: %d\n", edad_Angelica);

   edad_Kracker = 24;
   edad_Angelica = 21;
   printf("Edad de Kracker ahora: %d\n", edad_Kracker);
   printf("Edad de Angelica ahora: %d\n", edad_Angelica);
   printf("Edad de Kracker hace 5  a^nos = %d\n", edad_Kracker - 5);
   printf("Edad de Angelica hace 5 a^nos = %d\n", edad_Angelica - 5);
   printf("En 2 a^nos Kracker tendra %d y Angelica tendra %d\n", edad_Kracker  + 2, edad_Angelica + 2);
   printf("La mitad de la edad de kracker es = %.0f\n", edad_Kracker / 2);
   printf("La mitad de la edad de Angelica es = %.1f\n", edad_Angelica / 2);
   printf("El doble de la edad de Kracker mas es doble de la edad de Angelica es = %.0f\n", edad_Kracker * 2 + edad_Angelica * 2);
   printf("La tercera parte mas 1 de la edad de Kracker mas el doble menos 1 de la edad de angelica es = %.0f\n", (edad_Kracker / 3) + 1 + (edad_Angelica * 2) - 1);
 
   return 0;
}
Imagen

Avatar de Usuario
dark_sasuke
Moderador Global
Moderador Global
Mensajes: 3379
Registrado: 03 Sep 2009, 02:13
Twitter: D4rkyt0

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por dark_sasuke »

en que linea te da error al compilar? que toy perezoso y yo no compilo xD
Imagen

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por m0skit0 »

No tienes ningún error de compilación, compila perfectamente. Tienes un error de lógica (lo que se llama un bug).

Lo que no puedes hacer es convertir enteros a reales. Los enteros no incluyen a los reales, pero los reales incluyen a los enteros

m0skit0 escribió:Es decir, ya que float incluye int (float puede tomar valores de int y más) entonces debes ponerlos float.

Código: Seleccionar todo

printf("La mitad de la edad de kracker es = %.0f\n", edad_Kracker / 2);

Esto va a dar siempre 0, ya que no puedes convertir un entero a un real. Pero sí puedes convertir un real a un entero. Mira lo que te dice el vicejefe:

largeroliker escribió:Si vas a dividir y quieres que muestre un número entero, puedes declararlo como float y llamarlo como %.0f, siendo 0 el número de decimales a mostrar.

Tú lo estás haciendo al revés: lo declaras como int e intentas ponerlo como %.0f.
Imagen

Avatar de Usuario
Kracker
ViP Hordes
ViP Hordes
Mensajes: 1212
Registrado: 03 Sep 2009, 00:38
PSN ID: Mario_-Almada_-
Contactar:

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por Kracker »

Por mas que lo pongo de una manera u otra no me deja..

Hechame una mano profe que ya estoy desesperado y estoy a punto de tirar la toalla.. :(

Dime como va y yo investigo el porque con lo que me haz dicho..
Imagen

Avatar de Usuario
largeroliker
Administrador
Administrador
Mensajes: 8283
Registrado: 03 Sep 2009, 09:46
PSN ID: larger0o
Gamertag Xbox Live: larger0o
Steam ID: larger0o
Twitter: larger0o
Ubicación: Málaga
Contactar:

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por largeroliker »

La cuestión es que no puedes declarar una variable como int y luego llamarla como float. Como m0ski te ha dicho, float contiene a int.

Declara las variables como float, y en las que quieras que no muestre decimales llámalas %.0f. Si lo que quieres es que muestre un par, llámalas %.2f. También puedes llamarlas %f, pero te saldrán un porrón de decimales (seis si no recuerdo mal)

Saludos! ;)
Imagen
Steam Deck · Xbox Series X · PS5 · Switch · PS Vita · WiiU · PS3 · new 3DS XL · Xbox 360 · PSP · PS2

Avatar de Usuario
Kracker
ViP Hordes
ViP Hordes
Mensajes: 1212
Registrado: 03 Sep 2009, 00:38
PSN ID: Mario_-Almada_-
Contactar:

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por Kracker »

Ustedes se refieren a esto?..

Código: Seleccionar todo

#include <stdio.h>

int main(int argc, char *argv[])
{
   float edad_Kracker;
   float edad_Angelica;
   
   
   edad_Kracker = 21;
   edad_Angelica = 18;
   printf("Edad de Kracker hace tiempo: %.0f\n", edad_Kracker);
   printf("Edad de Angelica hace tiempo: %.0f\n", edad_Angelica);

   edad_Kracker = 24;
   edad_Angelica = 21;
   printf("Edad de Kracker ahora: %.0f\n", edad_Kracker);
   printf("Edad de Angelica ahora: %.0f\n", edad_Angelica);
   printf("Edad de Kracker hace 5  a^nos = %.0f\n", edad_Kracker - 5);
   printf("Edad de Angelica hace 5 a^nos = %.0f\n", edad_Angelica - 5);
   printf("En 2 a^nos Kracker tendra %.0f y Angelica tendra %.0f\n", edad_Kracker  + 2, edad_Angelica + 2);
   printf("La mitad de la edad de kracker es = %.1f\n", edad_Kracker / 2);
   printf("La mitad de la edad de Angelica es = %.1f\n", edad_Angelica / 2);
   printf("El doble de la edad de Kracker mas es doble de la edad de Angelica es = %.1f\n", edad_Kracker * 2 + edad_Angelica * 2);
   printf("La tercera parte mas 1 de la edad de Kracker mas el doble menos 1 de la edad de angelica es = %.1f\n", (edad_Kracker / 3) + 1 + (edad_Angelica * 2) - 1);
 
   return 0;
}


:ugeek:
Imagen

arisma
Habitual
Habitual
Mensajes: 497
Registrado: 18 Sep 2009, 08:41

Re: [Curso] Introducción a la programación en C (IV)

Mensaje por arisma »

Código: Seleccionar todo

printf("El doble de la edad de Kracker mas es doble de la edad de Angelica es = %.1f\n", edad_Kracker * 2 + edad_Angelica * 2);
printf("La tercera parte mas 1 de la edad de Kracker mas el doble menos 1 de la edad de angelica es = %.1f\n", (edad_Kracker / 3) + 1 + (edad_Angelica * 2) - 1);


En el primer caso aunque no es estrictamente necesario, no estaría mal dejar claro a golpe de vista lo que se quiere hacer por medio de paréntesis. Como las edades son números enteros, aquí igualmente puedes poner %.0f.

Respecto a la segunda se hace más patente, yo lo pondría con extra de parentesis:

((edad_Kracker / 3) + 1) - ((edad_Angelica * 2) -1)

o si lo prefieres

(edad_Kracker / 3 + 1) - (edad_Angelica * 2 -1)

Responder