Cześć, napisałem kawałek kodu, który oblicza ile razy przecięto 0(zmieniono znak)
Program kompiluje się poprawnie.
Uruchamiam go wraz z danymi wejściowymi w dokumencie txt komendą " cat dane.txt|./a.out "
Program działa popranie na macOS, jednak kiedy przekopiowałem kod na serwer z systemem solaris po skompilowaniu wyświetla błąd danych.
To samo dzieje się na serwerze z debianem.
Załączam kod, dane wejściowe i screenshoty.
#include <stdio.h>
#define UP 10
#define LOW -10
#define END 99
int main() {
float parametr1, parametr2, i=0;
int cross0=0, number=1; /*cross0=liczba przecięć 0*/
do {
scanf("%f", ¶metr1); /*wczytanie danych*/
i++;
if (parametr1>=LOW && parametr1<=UP) /*Sprawdzenie czy wartość zawiera się w <-10,10>*/
if (parametr1*parametr2<0) { /*Sprawdzenie czy występuje przecięcie 0*/
parametr2=parametr1;
cross0++; }
if (i==98) {
if(cross0>=8 && cross0<=14) /*Sprawdzenie czy częstotliwość nalezy do przedziału od 8 do 14*/
printf("Pomiar %d. Częstotliowość wynosi %d \n", number, cross0); /*Wyświetlenie częstotliowść dla 99 pomiarów*/
else
printf("Pomiar %d. Błąd danych! Częstotliwość wynosi %d \n", number, cross0);
i=0; /*Zerowanie wskaźników*/
cross0=0;
number++;
}
} while (parametr1!=END); /*Koniec programu dla 99*/
return 0;
}