Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Aykro en 20 Febrero 2014, 20:21 pm



Título: Ayuda con dibujo de una equación en Borland
Publicado por: Aykro en 20 Febrero 2014, 20:21 pm
Hola chicos, veréis, el caso es que estoy realizando un trabajo en el instituto, en el cual de parte práctica realizo un programa de equaciones matemáticas de segundo grado, el caso es que la parte en la que realizo el cálculo y demás ya esta hecho, ahora me falta la parte gráfica, y la verdad es que no se como hacerlo.. Tengo hecho la parte en la que se ven los dos rectangulos, y los dos ejes de coordenadas, y me gustaría ahora que, al darle los valores de los coeficientes, pues me dibuje lo que es, por ejemplo, una equación de segundo grado, es una parábola, pues que introduciendo los valores de x^2, de x y del valor independiente, pues me realice el dibujo en cuestión.. Si alguien me pudiera ayudar, la verdad es que se lo agradecería muchisimo. Gracias de antemano.

PD, Me olvidé decirlo, estoy trabajando en Borland TC


Título: Re: Ayuda con dibujo de una equación en Borland
Publicado por: eferion en 21 Febrero 2014, 08:11 am
PD, Me olvidé decirlo, estoy trabajando en Borland TC

Borland TC es un IDE... un entorno de desarrollo... lo que permite que el programa funcione son las librerías y el compilador... y eso es independiente del IDE.

No has indicado qué librería gráfica ( si es que usas alguna ) empleas para imprimir la ecuación, tampoco has indicado el formato de tus datos, no has puesto código por ningún sitio... así poco se puede hacer.


Título: Re: Ayuda con dibujo de una equación en Borland
Publicado por: Gh057 en 21 Febrero 2014, 12:34 pm
Hola Aykro, si ya tienes el dibujo del eje de coordenadas, quiere decir que ya implementas alguna biblioteca (por ejemplo allegro? es multiplataforma) por lo cual no te sería difícil dibujar un punto... una curva es una sucesión de ellos así que debes crearlo con un bucle; solo tendrías que implementar algún algoritmo para solventar el problema de la escala, y que entre tu gráfico en la pantalla, saludos


Título: Re: Ayuda con dibujo de una equación en Borland
Publicado por: Aykro en 21 Febrero 2014, 20:24 pm
Hola, aquí está el código efeiron, me olvidé de ponerlo, lo siento xD

#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <graphics.h>
#include <math.h>

/* Les funcions del meu programa */

void Menu(void);
/* Men£ presentaci¢ del programa */
void CalculArrels(void);
/* C…lcul anal¡tic de les arrels */
void RepresentacioGrafica(void);
/* Representaci¢ gr…fica de les arrels */

void main(void)
{

/* Declaraci¢ de les variables utilitzades al programa principal */

   int opcio=0;

/* Instruccions del programa principal */

   clrscr();
   Menu();
   printf("\n\n\t Quina opci¢ esculls? ");
   scanf("%d", &opcio);
   switch (opcio){
      case 1: CalculArrels(); break;
      case 2: RepresentacioGrafica(); break;
      case 3: break;
      default: exit(1);
   };
   getch();
}

/* Aqu¡ s'acaba el programa principal. Ara definim les subrutines */

void Menu(void)
{
/* Variables de la funci¢ Menu */

/* Instruccions de la funci¢ Menu */
   printf("\n\n\t An…lisi d'un polinomi de segon grau.\n");
   printf("\n\n\t 1. C…lcul de les arrels del polinomi de segon grau.");
   printf("\n\n\t 2. Representaci¢ gr…fica del polinomi de segon grau.");
   printf("\n\n\t 3. Sortir.");

}

void CalculArrels(void)
{
/* Variables de la funci¢ CalculaArrels */
   double coef_a=0, coef_b=0, coef_c=0;
   double solu_1=0, solu_2=0, part_re=0, part_im=0;
   double discriminant=0;

/* Instruccions */
   clrscr();
   printf("\n\n\t Lectura de les dades.\n");
   printf("\n\t Coeficient a:= ");
   scanf("%lf",&coef_a);
   printf("\n\t Coeficient b:= ");
   scanf("%lf",&coef_b);
   printf("\n\t Coeficient c:= ");
   scanf("%lf",&coef_c);
   discriminant=coef_b*coef_b-4*coef_a*coef_c;
   if (discriminant > 0){
      solu_1=.5*(-coef_b+sqrt(discriminant));
      solu_2=.5*(-coef_b-sqrt(discriminant));
      printf("\n\n\t Polinomi amb dues arrels reals:\n");
      printf("\n\t\t X_1:= %lf\n", solu_1);
      printf("\n\t\t X_2:= %lf\n", solu_2);
   }
   if (discriminant == 0){
      solu_1=-.5*coef_b/coef_a;
      printf("\n\n\t Polinomi amb una arrel doble:\n");
      printf("\n\t X_1= %lf\n", solu_1);
   }
   if (discriminant < 0){
      part_re=-.5*coef_b/coef_a;
      part_im=.5*sqrt(-discriminant)/coef_a;
      printf("\n\n\t Polinomi amb dues arrels complexes conjugades:\n");
      printf("\n\t\t X_1:= %lf + %lf i \n", part_re, part_im);
      printf("\n\t\t X_2:= %lf - %lf i \n", part_re, part_im);
   }
}


void RepresentacioGrafica(void)
{

/* Definici¢ de les variables */

   int control=VGA, mode=VGAHI;

   initgraph( &control, &mode, "c:\\tc");
   setcolor(YELLOW); /* o podem escriure setcolor(14); */
   rectangle (40,30,300,450);
   rectangle (60,50,280,430);
   setcolor(RED);
   line(70,240,260,240);
   line(165,80,165,400);
   setcolor(BLUE);
   putpixel(440,30,MAGENTA);
   outtextxy(450,70,"Informaci¢");
   getch();
   closegraph();

Me falta código en la parte de RepresentacioGrafica, lo que me gustaría hacer es que, en el espacio que tengo predeterminado (el primer rectangle, ya que es el más grande), realizar esta secuencia de bucles de puntos que has comentado Gh057, pero es que no se como sería la verdad..

Es decir, lo que yo quiero hacer es, introducir por ejemplo un valor de una equación, que sea por ejemplo y=2x^2+3x-5 (ojo, resolver esta ecuación ya esta en la parte de CalculArrels), pues que, con una sucessión de puntos, me dibuje como sería esa equación en los ejes que ya tengo hechos (Los dos Line)

Gracias por las respuestas.


Título: Re: Ayuda con dibujo de una equación en Borland
Publicado por: Gh057 en 21 Febrero 2014, 21:18 pm
hola Aykro, debes pasarle los coeficientes como parámetro a tu función, ya dentro mediante un bucle incrementas la variable x (ajusta la precisión con decimales no hagas el x++) y con ambas coordenadas graficas el punto, tal como harías con lapiz y papel. Saludos