#include #include #include // ukol12 hledani sinusovky v sumu pomoci goertzelova algoritmu int main(int a, char *p[]) { if (a != 4) { // kontroluje spravnz pocet argumentu printf("\e[31mSpatne argumenty\nsamplef PocetVzorku f\e[0m\n"); exit(-1); } // iniciaklizace double samplef, comega, um, f, us; int ts; samplef = atof(p[1]); // vzorkovaci kmitocet ts = atoi(p[2]); // pocet vzorku f = atof(p[3]); // kmitocet sinusovky if (samplef < 1.0 || f < 0 || ts < 0) { // test jestli neni zadano "-: printf("\e[31mNezaporuj\e[0m\n]"); exit(-2); } printf("\e[33msamplef %lf f %lf ts %d\e[0m\n", samplef, f, ts); comega = cos(2 * M_PI * f); /* //printf("\e[33m%lf\e[0m\n",omega); //zjistuje jestli je //int j = ts*samplef/100+1; //printf("%d\n",j); */ while (1) { double q1 = 0.0, q2 = 0.0; // nulovani for (int i = 0; i < ts; i++) { if (scanf("%lf", &us) != 1) { // nacitani printf("@\n"); exit(1); } um = us + 2 * comega * q1 - q2; q2 = q1; q1 = um; //printf("@"); } // vypisuje + - um=(um*um)+(q1*q1)-(2*comega*um*q1); //printf("%3f\n",um); if (fabs(um) > 50000.0) // abs printf("+"); else printf("-"); } }