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. |
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ć . 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? |
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? |
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: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/ |