# Windows Console에 Sin,Cos 그래프 표시

 

 

 



using System;

class Program
{
    public static void Main(string[] args)
    {
        CHKNM nmm = new CHKNM();
nmm.RUN();
    }
}
class CHKNM
{
    //Console Width, Heigth
    int width = 0;
    int height = 0;

    //Math.Cos,Math.Sin's Value to mapping Console Screen Size
    double mapx = 0.0;
    double mapy = 0.0;

    int toggle = 0;
    int nextxpos = 0;

    int end_degree_value = 360 * 2;

    public void RUN()
    {
width  = Console.WindowWidth;
        height = Console.WindowHeight;

        //Dynamic array index possible
int[,] screenposition = new int[width,height];

for(int ii=0; ii<height; ii++)
for(int kk=0; kk<width; kk++)
{
    screenposition[kk,ii]=0;
}

        for(int degree = 1; degree < end_degree_value; degree++)
{
    double radian = Math.PI * degree / 180.0;
    double funcy = Math.Cos(radian) + 1.0;

    mapy = height * 0.99 / 4.0;
    mapx = Convert.ToDouble(width) / Convert.ToDouble(end_degree_value);

    int ypos = Convert.ToInt32(funcy * mapy);
    int xpos = Convert.ToInt32(degree * mapx);

    if(ypos == height) continue;
    if(xpos == width) continue;

            if(toggle == 0)
    {
        toggle = 100;
nextxpos = xpos;
screenposition[xpos,ypos]=1;
    }
    else
    {
        if(nextxpos == xpos) continue;
else
{
    screenposition[xpos,ypos]=1;
    nextxpos = xpos;
}
    }
}
#if(true)
        string screenTxt = "";
for(int ii=0; ii<height/2; ii++)
{
    for(int kk=0; kk<width; kk++)
    {
        if(screenposition[kk,ii] == 1) screenTxt += "*";
else screenTxt += " ";
    }
    screenTxt += "\n";
}
Console.WriteLine(screenTxt);
#endif
    }
}









+ Recent posts