Musze napisać program, który ma odczytywać sekwencję liczb całkowitych z terminala i wyliczać częstotliwość wystąpień przecięć zera we wczytywanym strumieniu wejściowym. Przecięcie zera następuje każdorazowo, gdy po 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 - wartość częstotliwości spoza przedziału od 5 do 8 uznawana jest za niepoprawną i powoduje pojawienie się na wyjściu programu odpowiedniego komunikatu; w pozostałych przypadkach nie jest generowany żaden komunikat.
Przedstawiam schemat blokowy,mysle ze jest dobry bo kolega zniego korzystal i udalo musiezrobic.
kod programu:
#include <stdio.h>
#include <math.h>
#define MAX_LICZB 99
int main()
{
int a,b,liczby,ile,iloczyn;
a=0;
liczby=0; /*ilosc liczb */
ile=0; /*ilosc przeciec zera */
printf("Program ten wylicza ilosc przeciec zera z podanego ciagu cyfr.\n\n");
while(b!=99)
{
if (liczby=MAX_LICZB)
{
if (ile>=5 && ile<=8)
printf("Wystoapilo %d,", ile "przeciec zera"
else
printf("NIestety ilosc przeskokow nie miesci sie w przedziale od 5 do 8");
a=0;
liczby=0;
ile=0;
}
printf("Wprowadz teraz pierwsza cyfre\n");
scanf("%f",&b);
if (b<=10 && b>=10)
{
if (b==0)
liczba++;
else
{
liczba++;
iloczyn=a*b;
if (iloczyn=0)
b=a;
else
{
if (iloczyn<0)
ile++;
b=a;
else
b=a;
}
}
}
else
{
if (a=99)
if (ile!=0)
printf("Wystoapilo %d,", ile "przeciec zera")
else
printf("Wprowadzona przez Ciebie liczba nie miesci sie w przedziale <-10;10> ani ni jest liczba 99");
}
}