Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - programator11

#1
Cita de: eferion en  6 Agosto 2014, 14:39 PM
Estás calculando el resultado de la ecuación usando las funciones de math.h... que no tienen soporte para números complejos

Código (cpp) [Seleccionar]
double _Complex resimag1 = res1;

res1 es un double normalito... no entiende de imaginarios ni sabe siquiera que existen.

Entiendo...tendria que implementar entonces otra libreria para ello?

Muchas gracias por tu tiempo ;)
#2
Hola a todos.

Veréis estoy empezando a trabajar con números complejos y a emplear en general las funciones de math.h y complex.h, y para practicar me pareció una buena idea ,por ejemplo, realizar un programa que resolviera ecuaciones de 2ºgrado.

Mi codigo es el siguiente;

#include<stdio.h>
#include<complex.h>
#include<math.h>
void grado (float,float,float);
main()
  {
  float a,b,c;
  printf ("Introduzca los coeficientes de la ecuacion en el formato (a,b,c)\n\n");
  scanf ("%f,%f,%f",&a,&b,&c);
  grado (a,b,c);
  return 0;
  }

void grado (float a,float b,float c)
  {
  if (a==0)
    {
    printf ("No se puede dividir por a=0");
    }
  else
    {
      float res1,res2;
      res1 = (-b+(sqrt(pow(b,2)-4*a*c)))/(2*a);
      res2 = (-b-(sqrt(pow(b,2)-4*a*c)))/(2*a);
     
      if (pow(b,2)-4*a*c<0)
        {
          double _Complex resimag1 = res1;
    double _Complex resimag2 = res2;
    printf ("\nEl primer resultado es %f \n El segundo resultado es %f \n",resimag1,resimag2);
        }
      else
        {
        printf ("\nEl primer resultado es %f \n El segundo resultado es %f \n",res1,res2);
        }
    }
return;
  }
     

        
Para resultados comunes no experimento ningún problema, pero cuando los coeficientes me dan un numero complejo, el resultado invariablemente me da 0.00000.

Seguramente no sean correctas las funciones implementadas dentro del;

if (pow(b,2)-4*a*c<0) \\Numeros complejos
        {
          double _Complex resimag1 = res1;
    double _Complex resimag2 = res2;
    printf ("\nEl primer resultado es %f \n El segundo resultado es %f \n",resimag1,resimag2);


¿Me podeis echar una mano?

Muchas gracias. :)
#3
Buenas que tal.

Mi problema es el siguiente, quiero hacer un programa que vaya concatenando las palabras que yo vaya introduciendo por teclado, el problema es que no se como hacer para que se concatenen con un espacio cada palabra (aaa bbb en lugar de aaabbb)

He probado a concatenar un espacio a cada palabra que se introduzc pero no obtengo resultado,aqui mi codigo;


..........
.........
void funcion()
   {
    char cad[100],pal[18];
    char seg;
    int cont=0;
do
    {
      if (cont==0)
      {
      printf ("\nIntroduzca la primera palabra\n\n");
      scanf ("%s",&pal);
        strcat (cad,pal);
      cont++;
      }
     
      else
      {
      printf ("\nIntroduzca la siguiente palabra de la frase:\n");
      scanf ("%s",&pal);
      strcat (cad,pal);
      }
        printf( "\nSi quieres seguir alargando la frase pulsa S, sino pulsa cualquier otra letra:\n" );
    fflush(stdin);
        scanf( "%c", &c);
   } while ( c == 's' );
    printf ("\n\nLa frase final es \n\n%s",cad);



Gracias de antemano  :)