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

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

Avatar de Usuario
finfantasy
Habitual
Habitual
Mensajes: 153
Registrado: 15 Oct 2009, 19:00

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

Mensaje por finfantasy »

Puedes llamarlo como floats, igual que tienes declarado x1 y x2, aunque creo recordar que los floats eran 4 bytes y los double 8 bytes. Supongo que para eso que haces, con 4 bytes tendrás suficiente, así que declaralas todas como floats.

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 »

finfantasy escribió:cambia las variables a double's

Con float normalmente tienes de sobra. Pero ojo larger, estamos hablando de cambiar el tipo de a, b y c, no sólo x1 y x2.

largeroliker escribió:Y pasa esto...

Claro, has puesto una ecuación con soluciones complejas, no reales. Es decir, b^2 - 4ac < 0, en tu caso preciso 3^3 - 4*3*3 = -27, y la raíz cuadrada de un número negativo es un número complejo. Para evitar soluciones complejas tienes que comprobar que el discriminante (b^2 - 4ac) siempre sea >= 0, o lo que es lo mismo b^2 >= 4ac ;)

Un pequeño truco para calcular mentalmente las raíces de una ecuación de segundo grado es: x^2 - Sx + P = 0, donde S = suma de las raíces y P = factor de las raíces. Por ejemplo si yo quiero una ecuación de segundo grado con raíces 2 y -5, sería S = -3 y P = -10, por tanto la ecuación sería: x^2 + 3x - 10 = 0. En caso de que a > 1, se divide toda la ecuación por a para obtener a = 1. Por ejemplo: 16x^2 - 16x + 3 = 0 -> x^2 - x + 3/16 = 0, por tanto S = 1 y P = 3/16 -> x1 = 1/4 = 0.25 y x2 = 3/4 = 0.75.

Saludos
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 »

m0skit0 escribió:
finfantasy escribió:cambia las variables a double's

Con float normalmente tienes de sobra. Pero ojo larger, estamos hablando de cambiar el tipo de a, b y c, no sólo x1 y x2.

Oka.
m0skit0 escribió:
largeroliker escribió:Y pasa esto...

Claro, has puesto una ecuación con soluciones complejas, no reales. Es decir, b^2 - 4ac < 0, en tu caso preciso 3^3 - 4*3*3 = -27, y la raíz cuadrada de un número negativo es un número complejo. Para evitar soluciones complejas tienes que comprobar que el discriminante (b^2 - 4ac) siempre sea >= 0, o lo que es lo mismo b^2 >= 4ac ;)

Ostia, patinón! Ya decía que me sonaba esa notación, pero no recordaba de qué...

El caso es que quería basarme muy por encima en un programita de VB que hacía eso mismo, pero se me olvidó por completo el check de 4ac=<b^2 :roll:
m0skit0 escribió:Un pequeño truco para calcular mentalmente las raíces de una ecuación de segundo grado es: x^2 - Sx + P = 0, donde S = suma de las raíces y P = factor de las raíces. Por ejemplo si yo quiero una ecuación de segundo grado con raíces 2 y -5, sería S = -3 y P = -10, por tanto la ecuación sería: x^2 + 3x - 10 = 0. En caso de que a > 1, se divide toda la ecuación por a para obtener a = 1. Por ejemplo: 16x^2 - 16x + 3 = 0 -> x^2 - x + 3/16 = 0, por tanto S = 1 y P = 3/16 -> x1 = 1/4 = 0.25 y x2 = 3/4 = 0.75.

Saludos

Aunque ahora esté un poco espeso, me acuerdo perfectamente de haber dado eso. Eso sí, de darlo, porque lo que es en el tema no tengo ni mucho menos soltura :P yo lo calculo a pelo, que no tardo tanto.

Cambio los números a ver si da bien, y aparco el programita para más adelante que sepa como registrar datos y añadir condicionales :)

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

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

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

Mensaje por Puzky »

Que pasa? no me salen los numeros

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 
  int edad_isaac;
  int edad_uziel;
 
  edad_isaac = 8;
  edad_uziel = 16;
  printf("Edad de Isaac hace 2 años: &d\n", edad_isaac);
  printf("Edad de Mia hace 3 años: &d\n", edad_uziel);
 
  getch();   
  return 0;
}

Spoiler:
Imagen

Avatar de Usuario
wf19
Habitual
Habitual
Mensajes: 194
Registrado: 03 Sep 2009, 02:12

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

Mensaje por wf19 »

Puzky escribió:printf("Edad de Isaac hace 2 años: &d\n", edad_isaac);
printf("Edad de Mia hace 3 años: &d\n", edad_uziel);


Cambia esos &d........ por %d........... ;)

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

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

Mensaje por Puzky »

cierto me confundi :juasjuas: gracias wf19 :oki:

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 »

mira como pusiste el %d en las frase ;)

y podrias declarar los valores en las mismas variables y tambien puedes declarar todas las variables en una misma linea

osea:

int edad=00 edad2=00;
Imagen

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

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

Mensaje por Puzky »

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
 
  int edad_isaac;
  int edad_uziel;
 
  edad_isaac = 6;
  edad_uziel = 13;
  printf("Edad de Isaac hace 2 años: %d\n", edad_isaac);
  printf("Edad de Mia hace 3 años: %d\n", edad_uziel);
 
  edad_isaac = 8;
  edad_uziel = 16;
  printf("Edad de Isaac: %d\n", edad_isaac);
  printf("Edad de Mia: %d\n", edad_uziel);

  getch();   
  return 0;
}


Que opina profe??

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 »

Muy bien, aunque tu firma es demasiado grande :juasjuas:
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 »

dark_sasuke escribió:mira como pusiste el %d en las frase ;)

y podrias declarar los valores en las mismas variables y tambien puedes declarar todas las variables en una misma linea

osea:

int edad=00 edad2=00;


Con coma separando las variables ','

Responder