Gráfica de Seno y Coseno en C++

Juand a través de un comentario me pidió ayuda con un programa que grafique utilizando gotoxy las gráficas de seno y coseno en c++. El programa me pareció interesante y, aunque tuve que desempolvar el Borland C++ que usaba en la prepa, lo hice… feo, pero lo hice.

A mi parecer, 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
#include
#include
#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;
}

gráfica seno

31 thoughts on “Gráfica de Seno y Coseno en C++

  1. Muchisimas Gracias Por Atender Mi Peticion Infinitamente Agradecidoo…. Esto es Lo Q Esperamos D Internet Y Personas Como Ud En Este Cuentoo! Muchas Muchas Graciass

    1. No se, no se, yo lo compile en Turbo C++ 3.1 y aún copiándolo de aquí me corre bien.

      Investigando un poco tal vez sus versiones de C++ necesiten que se especifique la conversión de float a int que se hace en esa precisa línea, quedaría así:

      y = (int)(ceil(sin(i/180*PI)*20)/2);

      Me cuentan si ya se arregló.

  2. Gracias por el ejercicio! Pero a mi Me sale un Error cuando compilo el ejercicio, Especificamente en y = ceil(sin(i/180*PI)*20)/2;

  3. Bueno muchisimas Gracias Pero Necesitamos D Tu Ayuda tenemos Plazo para entregar este trabajo escolar hasta el 21 de octubre y ahora que este error se ha solucion nos marca error especificamente en gotoxy(x, 12-y);printf(“o”);
    Comprendemos Q Ud lo haya realizado en turbo c 3.1 pero es un trabajo exscolar que demeos presentar en la escuela y debemos mostrarlo por c++ 4.9.9.2 ps tiene un formao mas actualizado y claro
    esperamos de su pronta ayuda y respuesta muchas gracias de antemano por su atencionn
    y esperamo su colobaracion q pena cn ud

    1. Eso si que es raro, es una línea perfectamente normal. ¿Has utilizado la función gotoxy() en otros programas? ¿Qué dice el error que te sale? ¿Cómo se llama exactamente tu IDE? ¿De casualidad no se llama DEV-C++? Porque si es Dev-C++ significa que no tienes la librería conio.h, en donde está la función gotoxy().

      No te aflijas por seguir diciéndome los errores que te salgan. No me voy a quedar tranquilo hasta que te corra ese programa🙂

  4. amigo… ola.. me pasa lo mismo que a juand utilizo Dev-c++ y pue todo me funciona bien, crrije la parte de

     y = ceil(sin(i/180*PI)*20)/2;

    por

     y = (int)(ceil(sin(i/180*PI)*20)/2);

    y me logro funcionar esa pare pero despues mas adelante no me funciona al gotoxy me tira error entonces modifique y lo puse haci

     goto (x,12-y)

    etc… y me tira error de todas maneras pero estaves pareciera que si me identificara el comando pues el comando gotoxy (… me decia que no lo reconocia…
    tnego la biblio teca conio.h, nunca e utilizado gotoxy y no que es eso de la IDE, emm el error de mi modificación dice mas o menos:

    expected identifier before ‘(‘ token
    expected `;’ before ‘(‘ token

    porfa.. una pronta respuesta mi trabajo parecer ser el mismo de juand para el 22 es el mio… parece qe estudiamos en la misma parte..

  5. listo. me logro funcionar y me corrio =), pero el programa tuyo es para solo un angulo ya definido, no podras hacerlo de manera que yo pueda elegir el angulo y el lo grafique?¿..

    1. ¿Hmm…? No, la gráfica que hace este programa son los valores de seno de 0 a 360º. La gráfica de un sólo ángulo sería un punto. O a lo mejor no te he comprendido.

    2. Me ayudas porque intente de todo y no me funciona en devc ya core pero me da el siguiente error:
      12:40 C:Dev-Cppmain.c too many decimal points in number.

  6. haaa… ya te entendi, mmm esta bien gracias tienes toda la razón era yo el que no comprendia xD.. weno gracias por la ayuda todo me logro funcionar =)

  7. hola instale el wxdev c++ y en opciones del compilador en compiler set escojo borland compiler y ya jala o instalar el conio2.h en include para que funcione. saludos

  8. amigo mucho gusto THEbatzuk me llamo wilmer por fin encontre una pag q sea seria y ayuden alas personas de verdad me ha ayudado mucho sus programas amigo lo felicito. No se si seria un abuso de mi parte nesito un programa que sea en el lenguaje c++ un modelo estadistico cualquira por mas que lo intento y averiguo noc como es y que a su ves se grafique que hago amigo estoy desesperado mi correo es [correo ocultado] por faaaaaaaa amigo porrr faaaa

  9. Yo tengo un problema con algo parecido. Necesito ayuda en un programa que grafique una linea recta pero a través de una función, para un proyecto. Agradeceria mucho si me ayudan con esto.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s