/* Programa que dibuja una gra fica senoidal a partir de dos
parametros pasados por referencia desde la linea de comandos,
que seran la longitud de la cadena y el incremento de x */
#include <stdio.h> /* Librerias utilizadas*/
#include <math.h>
#include <stdlib.h>
#define PI 3.141591 /* Usaremos una constante PI */
void main(int argc, char *argv[])
{
int largo; /* Largo se pasara por referencia a main */
float paso; /* Paso tambien, sera el 2 valor */
double x=0,func; /* x es la variable de la que se calcula el seno */
char *cadena; /* Declaramos una cadena de caracteres */
int col,i,j; /* Otras variables */
if (argc!=3) /* Si no se introducen 2 parametros, da error */
{
printf("\a\n\n\t\t ERROR!!!\n\n\n");
printf("\n\tP.D.: Debes introducir dos parametros\n");
printf("\n Por ejemplo: seno longitud_cadena incremento_x\n\n");
exit(-1);
}
largo=atoi(argv[1]); /* Convertimos argv a largo y paso */
paso=atof(argv[2]);
cadena=malloc((largo + 1) *sizeof(char)); /* Reservamos memoria para cadena */
for(i=0;i<largo;i++)
{
*(cadena+i)='_'; /* Rellena la cadena */
}
*(cadena+largo)='\0'; /* Termina la cadena */
for(j=1;j<26;j++)
{
puts("\n"); /*Esto limpia la pantalla*/
}
/* Generamos el resultado */
do
{
func=sin(x); /* Calculamos el valor donde ira el '*' */
col=(func-1)/2*(largo-1)+(largo-1); /* Calcula */
*(cadena+col)='*';
printf("%s\n",cadena); /* Sacamos el resultado a pantalla */
*(cadena+col)='_';
x+=paso; /* Incrementamos x ... */
} /* ... hasta los 2 pi */
while (x<(2*PI));
free(cadena); /* Liberamos la memoria */
}