#include <graphics.h>	// diverse Includes
	#include <conio.h>
	#include<math.h>
	#include<stdio.h>
	#include<stdlib.h>
	void main(void)		// Start Hauptprogramm

	{

	int treiber, modus, x,y,z;	// Variablen initialisieren
	double sinuspos,a,f,frequenz,frequenzteil,u,udach,udachteil,sinus,faktor,bildpunkte,masy;
	char eingabe,text[10],text2[10];
	detectgraph(&treiber , &modus)  ; /*!!!! Modus abfragen */

	initgraph (&treiber , &modus, "e:\\nt4\\tc\\bgi\\") ; /*!!!! Grafik initialisieren */
						     /*!!!! VGA-Treiber=9,VGAHI=2*/



	printf("\t\tMit diesem Programm koennen Sie Sinusfunktionen\n");
	printf("\t\tgrafisch darstellen");
	getch();
	for (a=0;a<=3;a++)
		printf("\n");
	printf("\n\t\tBitte geben Sie folgende Eckdaten ein : \n\t\t");
	printf("\n\n\t\tFrequenz der Spannung ?\n\t\t");
	scanf("%lf",&frequenz);
	for (a=0;a<=2;a++)
		printf("\n");
	printf("\n\t\tU Dach der Spannung ?\n\t\t");
	scanf("%lf",&udach);
	for (a=0;a<=2;a++)
		printf("\n");
	printf("\n\t\tWieviele Sinus sollen dargestellt werden ? (1-3 empfohlen)\n\t\t");
	scanf("%lf",&sinus);

	for (a=0;a<=2;a++)
		printf("\n");

	printf("\n\t\t(E)ine oder (d)rei Phasen darstellen ?");
	eingabe=getch();
	switch (eingabe)
	{
	case 'd':
	case 'D':


	for (a=0;a<=30;a++)
		printf("\n");
	faktor=1/frequenz;
	bildpunkte=639/sinus;
	masy=150/udach;
	udachteil=udach/5;


	line (0,0,0,479);//y-Achse
	line (0,240,639,240);//x-Achse
	setlinestyle(0,0,3);
	      //	for (y=0;y<=639;y=y+bildpunkte/3)//Grad-Skalierung der x-Achse
	      //	{
	      //	line (y,235,y,245);
	      //	}
	setlinestyle(0,0,1);

		f=frequenz;
		frequenzteil=f/10*sinus;
		for (y=63.9;y<=640;y=y+64)
		{
		setcolor(YELLOW);
		line (y,230,y,250);
		moveto(y-40,250);
		itoa(frequenzteil,text2,10);
		setcolor(LIGHTGRAY);
		outtext(text2);
		frequenzteil=frequenzteil+f/10*sinus;
		}



		u=udach;
		for (y=90;y<=390;y=y+30)//Volt-Skalierung der y-Achse
		{
		setcolor(YELLOW);
		line (0,y,10,y);
		moveto(10,y);
		itoa(u,text,10);
		setcolor(LIGHTGRAY);
		outtext(text);
		u=u-udachteil;
		}
		setcolor(LIGHTGREEN);
		moveto(10,10);
		outtext("U/V");
		moveto(590,270);
		outtext("f/Hz");




	setlinestyle(0,0,1);
	moveto(0,240);

	setcolor(RED);
		for(x=0;x<=1278;x++)
		{
			sinuspos=(udach*sin(2*M_PI*frequenz*x*faktor/bildpunkte));
			lineto (x,-(sinuspos*masy)+240);
		}
	moveto(-639/3*1,240);

	setcolor(GREEN);
		for(x=0;x<=1278;x++)
		{
			sinuspos=(udach*sin(2*M_PI*frequenz*x*faktor/bildpunkte));
			lineto (x-bildpunkte/3,-(sinuspos*masy)+240);
		}
	moveto(-639/3*2,240);

	setcolor(BLUE);
		for(x=0;x<=1278;x++)
		{
			sinuspos=(udach*sin(2*M_PI*frequenz*x*faktor/bildpunkte));			;
			lineto (x-bildpunkte/3*2,-(sinuspos*masy)+240);
		}
	getch();
	break;

	case 'e':
	case 'E':




	for (a=0;a<=30;a++)
		printf("\n");
	faktor=1/frequenz;
	bildpunkte=639/sinus;
	masy=150/udach;
	udachteil=udach/5;


	line (0,0,0,479);//y-Achse
	line (0,240,639,240);//x-Achse
	setlinestyle(0,0,3);
	      //	for (y=0;y<=639;y=y+bildpunkte/3)//Grad-Skalierung der x-Achse
	      //	{
	      //	line (y,235,y,245);
	      //	}
	setlinestyle(0,0,1);

	       //	f=frequenz;
	       //	frequenzteil=f/10*sinus;
	       //	for (y=63.9;y<=640;y=y+64)
	       //	{
	       //	setcolor(YELLOW);
	       //	line (y,230,y,250);
	       //	moveto(y-40,250);
	       //	itoa(frequenzteil,text2,10);
	       //	setcolor(LIGHTGRAY);
	       //	outtext(text2);
	       //	frequenzteil=frequenzteil+f/10*sinus;
	       //	}



		u=udach;
		for (y=90;y<=390;y=y+30)//Volt-Skalierung der y-Achse
		{
		setcolor(YELLOW);
		line (0,y,10,y);
		moveto(10,y);
		itoa(u,text,10);
		setcolor(LIGHTGRAY);
		outtext(text);
		u=u-udachteil;
		}
		setcolor(LIGHTGREEN);
		moveto(10,10);
		outtext("U/V");





	setlinestyle(0,0,1);
	moveto(0,240);

	setcolor(RED);
		for(x=0;x<=1278;x++)
		{
			sinuspos=(udach*sin(2*M_PI*frequenz*x*faktor/bildpunkte));
			lineto (x,-(sinuspos*masy)+240);
		}

	getch();
	break;
	closegraph();
	}
	}