Przecięcie zera następuje każdorazowo, gdy po zmierzonej wartości dodatniej następuje wartość ujemna lub po wartości ujemnej dodatnia (także, gdy między tymi wartościami pojawia się jedno lub więcej zer). W przypadku wykroczenia wyliczanej częstotliwości poza zadany przedział na wyjściu programu powinien pojawić się odpowiedni komunikat. W szczególności:
pod uwagę mają być brane jedynie liczby z przedziału od -10 do 10 oraz liczba 99 oznaczająca koniec strumienia danych; pozostałe wartości są uznawane za niepoprawne i pomijane;
częstotliwość ma być określana jako liczba wystąpień przecięcia zera w kolejnych grupach złożonych z 99 liczb (co odpowiada okresowi pomiaru równemu 10 sekund) - wartość częstotliwości spoza przedziału od 8 do 14 (co odpowiada pulsowi spoza zakresu 50-80 uderzeń na minutę) uznawana jest za niepoprawną i powoduje pojawienie się na wyjściu programu odpowiedniego komunikatu; w pozostałych przypadkach nie jest generowany żaden komunikat
#include<stdio.h>
#include<math.h>
#define MAX 10
#define MIN -10
#define KONIEC 99
#define ROZMIAR 99
#define CZESTOTLIWOSC_MAX 14
#define CZESTOTLIWOSC_MIN 8
int main()
{
float wartosc1=0, wartosc2=0;
int licznik=0 , przeciecia=0; /* licznik-licznik liczb */
printf("Program liczy częstotliwość przecięć zera\n\n");
while(wartosc1!=KONIEC)
{
scanf("%f", &wartosc1);
if(MIN<=wartosc1 && wartosc1<=MAX)
{
licznik++;
if(wartosc1*wartosc2<0) /*następuje przecięcie*/
{
przeciecia++;
}
if(wartosc1!=0)
{
wartosc1=wartosc2;
}
if(licznik==ROZMIAR)
{
if(przeciecia<CZESTOTLIWOSC_MIN && przeciecia>CZESTOTLIWOSC_MAX)
{
printf("Niepoprawna liczba przeciec %d\n" ,przeciecia);
}
else
{
printf("Liczba przecięć %d\n" ,przeciecia);
}
przeciecia=0;
licznik=0;
wartosc2=0;
}
}
}
return 0;
}
widzicie co jest nie tak z moim kodem? za kazdym razem wyswietla liczba przeciec 0