Gráfica de Seno y Coseno en C++ | Código C++




para graficar por ejemplo la función seno, hacen falta 3 pasos:


1. Hacer un ciclo de 0 a 360º (con aumentos de 5 queda muy bien) con for, algo muy normal.



2. Calcular, obviamente, el seno de cada valor. Para esto la librería math.h nos regala la función sin(). Su uso es el obvio, pero el asunto es que todas las funciones trigonométricas que usa c++ trabajan en radianes. Es decir que primero tendremos que convertir nuestro ángulo en radianes y luego ya sacar el seno. Si la variable ‘i’ contiene el ángulo y tenemos ya definida la constante PI, la función quedaría así:

sin(i/180*PI)


3. Luego viene la parte más rara, convertir ese valor en un entero que pueda meter como coordenada en un gotoxy. Si tenemos una variable int y y la igualamos a nuestra función anterior podría quedar bien si multiplicamos por 10:

int x, y; y = sin(i/180*PI)*10; gotoxy(x,y);

Nos quedaría nuestra gráfica en una escala 1:10, pero al correr el programa veremos que hay muchos valores de seno que son 10 (por el redondeo) y por lo tanto la gráfica se ve achatada.





Para mejorar un poco eso (de todos modos queda un poco fea) podemos usar la función ceil() incluida también en la librería math.h que nos redondea los decimales. Y esta vez multiplicamos por 20, redondeamos, dividimos entre 2 y convertimos a int. Nos vuelve a quedar escala 1:10 (¿o 10:1 …? no se) pero ya no hay tantas cantidades amontonadas en el 10 y -10.


El programa ya listo para graficar seno está aquí abajo, obviamente para graficar coseno sólo hay que cambiar la función sin por cos, y copiar, pegar y hacer un menú no debe ser difícil.


#include<stdio.h>
#include<conio.h>
#include<math.h>
#define PI 3.14159265
 
int main()
{
 int x=2, y;
 for(float i=0; i<=360; i+=5)
 {
  y = ceil(sin(i/180*PI)*20)/2;
  gotoxy(x, 12-y);printf("o");
  x++;
 }
 getch();
 
 return 0;
}





Descargar código:





Comentarios

Entradas más populares de este blog

Ejemplo de suma Pascal

Solucion al error collation desconocida: 'utf8mb4_0900_ai_ci'