///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Program za izracunavanje sinusa, kosinusa, tangensa
// i kotangensa uglova od 0 do 90 stepeni za zadati korak.
// Tabelarni prikaz rezultata.
///////////////////////////////////////////////////////////////////////
#include <stdio.h> // standardni header
#include <math.h> // matematicki header
#include <windows.h> // WinApi header za promenu boje
#define PI 3.141592 // definise vrednost za PI
int plavaBoja(); // definisanje funkcije za promenu boje karaktera u plavo
int crvenaBoja(); // definisanje funkcije za promenu boje karaktera u crveno
main()
{
// definisanje promenljivih
double x=0, korak;
int znak=219, horLin, prvaLin;
plavaBoja(); // poziv funkcije za promenu boje
// Poruka korisniku
printf("Unestite prirastaj u stepenima: ");
// Ucitavanje vrednosti za korak
scanf("%lf", &korak);
printf("
");
// Pretvaranje stepena u radijane
korak=korak/180*PI;
crvenaBoja(); // poziv funkcije za promenu boje u crvenu
for (prvaLin=1;prvaLin<=80;prvaLin++){printf("%c",176);} // ispis prozirne linije
plavaBoja(); // poziv funkcije za promenu boje u plavo
// Ispis zaglavlja tabele
printf(" ");
for (horLin=1;horLin<=64;horLin++) {printf("%c",znak);}
printf("
%c x %c sin(x) %c cos(x) %c tan(x) %c ctg(x) %c
",znak,znak,znak,znak,znak,znak);
printf(" ");
for (horLin=1;horLin<=64;horLin++) {printf("%c",znak);}
printf("
");
// Izracunavanje trigonometrijskih funkcija i ispis u while petlji
while(x*180/PI<=90.0000001)
// koriscen je uslov <90.0000001, a ne <90 zbog racunanja sa double vrednostima, a ne sa int vrednostima
{
// Ispis svih potrebnih funkcija za jednu vrednost x u jednom redu
printf(" %c%10.3f %c%11.3f %c%11.3f ",znak , x*180/PI, znak, sin(x), znak, cos(x));
// Ukoliko je kosinus mnogo mali, tangens ce biti beskonacno veliki
if (cos(x)<0.00001)
{
printf("%c + %c ",znak,236);
}
else
{
printf("%c%10.3f ",znak, tan(x));
}
// Kotangens ima vrednost inverznu u odnosu na tanges
// Ukoliko tangens tezi nuli, kotangens ce teziti beskonacnosti
if(tan(x)<0.00001)
{
printf("%c + %c %c
",znak,236,znak);
}
else
{
printf("%c%11.3f %c
",znak , 1/tan(x), znak);
}
// Uvecanje x za zadati korak
x+=korak;
}
// Kraj tabele
printf(" ");
for (horLin=1;horLin<=64;horLin++) {printf("%c",znak);}
printf("
");
crvenaBoja(); // poziv funkcije za promenu boje u crvenu
for (prvaLin=1;prvaLin<=80;prvaLin++){printf("%c",176);} // ispis prozirne linije
plavaBoja(); // poziv funkcije za promenu boje u plavo
// Pauza
printf("
");
system("PAUSE");
}
int plavaBoja() // funkcija za promenu boje u plavo
{
// menjanje boje
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, 11);
return 0; // povratak
}
int crvenaBoja() // funkcija za promenu boje u crveno
{
// menjanje boje
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, 12);
return 0; // povratak
}