ATNEL tech-forum
https://forum.atnel.pl/

Prośba o weryfikację kodu.
https://forum.atnel.pl/topic23558.html
Strona 1 z 1

Autor:  antosV10 [ 22 sty 2021, o 17:26 ]
Tytuł:  Prośba o weryfikację kodu.

Witam, chciałem prosić aby ktoś kto zna się trochę na języku C zweryfikował czy przedstawiona poniżej funkcja poprawnie liczy średnią wartość ADC. Dziękuję za pomoc.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  wonsz [ 22 sty 2021, o 19:44 ]
Tytuł:  Re: Prośba o weryfikację kodu.

linia 18, czym jest adc_value? bo z tego co widzę przypisujesz temu wartość średnią, ale mniejsza.

Kod:
sr[idx]=measurement(PA5);


Na pewno nie chciałeś wypełnić całej tablicy tylko pierwszy jej element? :^)

Autor:  antosV10 [ 22 sty 2021, o 21:03 ]
Tytuł:  Re: Prośba o weryfikację kodu.

wonsz napisał(a):
linia 18, czym jest adc_value? bo z tego co widzę przypisujesz temu wartość średnią, ale mniejsza.

To zmienna globalna, której przypisuję wartość ADC, żeby móc używać jej potem w głównej pętli programu.

wonsz napisał(a):
Kod:
sr[idx]=measurement(PA5);


Na pewno nie chciałeś wypełnić całej tablicy tylko pierwszy jej element? :^)


Ale nie rozumiem, przecie wypełniam całą tablicę, bo zmienna "idx" jest inkrementowana z każdym wywołaniem funkcji.

Autor:  mtbchn [ 25 sty 2021, o 19:12 ]
Tytuł:  Re: Prośba o weryfikację kodu.

Moim zdaniem kod jest poprawny i zgodny z oczekiwaniami. Testowałeś?

Autor:  antosV10 [ 25 sty 2021, o 21:07 ]
Tytuł:  Re: Prośba o weryfikację kodu.

mtbchn napisał(a):
Testowałeś?


Tak, po testach okazuje się, że wszystko działa poprawnie. Pytałem tylko, w razie czego bo mogło się zdarzyć, że coś przegapiłem i coś może nie działać. Bardzo dziękuję za pomoc.

Autor:  wojtekr51 [ 25 sty 2021, o 23:20 ]
Tytuł:  Re: Prośba o weryfikację kodu.

Jedną rzecz proponowałbym Ci jeszcze uwzględnić, żeby otrzymać bardziej poprawny wynik. Aktualnie twoja funkcja troszkę zaniża średnią, konkretnie o wartość 0,5. Dla przykładu co oczekiwałbyś od twojej funkcji jeżeli miałaby obliczyć średnią z następujących 8 próbek: {1, 1, 1, 1, 1, 1, 1, 0}? Twoja funkcja da wynik 0. A według mnie wypadałoby żeby uśredniła to jako 1. Jeżeli tak ma być to ok, a jeżeli nie to czytaj dalej. ;)
Przy dzieleniu zmiennych całkowitych w języku C wynik zaokrąglany jest zawsze w dół, np. 7/8 otrzymasz w wyniku 0. Jak chcesz troszkę pogłówkować to zakończę już na tym moją podpowiedź. :)

Autor:  antosV10 [ 26 sty 2021, o 00:10 ]
Tytuł:  Re: Prośba o weryfikację kodu.

Witam, bardzo dziękuję za cenną uwagę wiedziałem, że mogę coś przegapić :P. A więc do mojej funkcji dodałem 2 linie kodu. Myślę, że mój zamysł na rozwiązanie tego problemu jest poprawny, ale nie mam pewności czy dobrze wykrywam jaka liczba występuje po przecinku. Czy reszta z dzielenia danej liczby jest tożsama z liczbą, którą dostaję po przecinku?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  antosV10 [ 26 sty 2021, o 09:16 ]
Tytuł:  Re: Prośba o weryfikację kodu.

Tutaj dodaję kod, który jeszcze zmodyfikowałem czy on będzie poprawnie realizował swoje zadanie?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  wojtekr51 [ 26 sty 2021, o 19:58 ]
Tytuł:  Re: Prośba o weryfikację kodu.

antosV10 napisał(a):
Czy reszta z dzielenia danej liczby jest tożsama z liczbą, którą dostaję po przecinku?
Nie. Reszta z dzielenia liczb całkowitych (% - operacja modulo) w twoim przypadku daje w wyniku wartość z zakresu od 0 do SR-1.

antosV10 napisał(a):
Tutaj dodaję kod, który jeszcze zmodyfikowałem czy on będzie poprawnie realizował swoje zadanie?
Zgubiłeś coś za ifem, jak już to zamiast "sr/SR+1;" powinno być "sr1 = sr1/SR+1;". Wydaje mi się że te obliczenia realizują zadanie. Ale można to zrobić o wiele prościej:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Czyli do sumy 8 próbek dodajesz jeszcze połowę tego przez co będziesz dzielił. :)

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/