Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 mar 2024, o 11:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 25 sty 2018, o 15:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 546
Pomógł: 0

Mam pytanie potrzebuje podpowiedzi , bo temat wydaje się prosty a ja nie mogę ruszyć z miejsca.

Przedstawię problem - z klawiatury wysyłane są cyfry w zależności jaką cyfrę nacisnę to do licznika (licznik) dociera dana cyfra, następnie wciskam koleją liczbę licznik ją dodaje
to taka faza testowa czy licznik zlicza licznik=licznik+wej_licze gdzie wej_licze oznacza daną aktualnie wciśniętą cyfę.
W tym przykładzie licznik sumuje każdą kolejnie wciśniętą cyfrę.

Ja mam jednak inne potrzeby , potrzebuje aby każde kolejne wciśnięcie cyfry przesuwało wynik o o rząd dziesiątek , następne o rząd setek i rząd tysięcy , przedstawie to na przykładzie żeby
było zrozumiane o co mi dokładnie chodzi:

- wciskam jako pierwszą np cyfrę "5" wynik=5 i tak jest następnie
- wciskam jako drugą np cyfrę "4" chcę aby wynik = 54 następnie
- wciskam jako trzecią np cyfrę "2" chcę aby wynik = 542 następnie
- wciskam jako czwartą np cyfrę "7" ostatecznie wynik = 5427 i jeśli teraz wcisnę koleją cyfrę to zaczynam od początku ale tu warunek będzi prosty

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

w funkcji licz() próbowałem robić warunki ale były błędne Proszę podpowiedzcie .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2018, o 16:16 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 288
Lokalizacja: Gdańsk
Pomógł: 13

mnóż każdy wynik przez 10 i nową liczbe dodawaj do tego.

------------------------ [ Dodano po: 2 minutach ]

chodzi mi o taki algorytm:
na początku zmienna wynik = 0
wciskasz klawisz 4
wynik * 10 + 4 = 4, bo 0 * 10 + 4
wciskasz 5
wynik * 10 + 5 = 45, bo 4 * 10 + 5



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2018, o 17:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 546
Pomógł: 0

Dzięki zaraz spróbuje i napisze co uzyskałem.

------------------------ [ Dodano po: 43 minutach ]

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


cos jest zle bo po wpisaniu np "4" wyskakuje dziwny wynik 032768 nie rozumiem dlaczego moze inaczej trzeba mnożenie wpisać?? , a może jakoś rzutowanie zrobić??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2018, o 18:40 
Offline
Użytkownik

Dołączył(a): 19 paź 2014
Posty: 357
Lokalizacja: stolyca pyrlandii :)
Pomógł: 18

A zmienną "wynik" masz na samym początku wyzerowaną ??
Tzn. po inicjalizacji zmiennej "wynik" przypisujesz do niej wartość 0 ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2018, o 19:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 546
Pomógł: 0

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


niestety nie pomogło , o co tu chodzi z tą zmienną niby ma tą wartość a chyba jest inaczej ?
Jak wpiszę dla testu wynik=wynik+wynik+cyf_zat; to wyświetla głupoty typu 27680 ?????? (a zapis wynik=wynik+cyf_zat; ) liczy poprawnie - to jaką to zmienną jest wynik??? proszę wytłumaczyć o co to chodzi?
Kolega 43kuku bardzo dobrze matematycznie to przedstawił tylko dlaczego tu w tym przypadku matematyka nie działa???



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2018, o 20:12 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Albo ja czegoś nie rozumiem z Twojego powyższego opisu sytuacji, albo za bardzo komplikujesz sobie życie.;) Czy musisz operować na zmiennych liczbowych? Czy te wprowadzane z klawiatury liczby są Tobie potrzebne do jakichś skomplikowanych obliczeń, czy może chcesz tylko wyświetlić na wyświetlaczu to co powciskał użytkownik z klawiatury? Ja bym to zrobił na zwykłym stringu lub buforze w postaci tablicy znakowej. Każdy przycisk dodaje do zmiennej,nazwijmy ją 'PIN' jeden przypisany mu znak jakiejś cyfry od '0' do '9'. Jeżeli ktoś wciskał po kolei klawisze np. 7890 to taki ciąg znaków w prosty sposób wyświetlisz sobie na dowolnym wyświetlaczu.


Autor postu otrzymał pochwałę

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sty 2018, o 21:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 546
Pomógł: 0

Własnie opisze dokładniej co potrzebuję - funkcja uint8_t liczba(void) zwraca wynik gdzie argumentem są pewne zależności jakie posiadają zmienne globalne, zwracanie wyniku odpowiada wciśniętej danej cyfrze ,
na klawiaturze kolejne wciskanie cyfr stworzy wynik - ten wynik potrzebował będę do zapisu np. danych na kartę sd czy muszę go mieć jako liczbę??? . Wyświetlanie wyników
na LCD jest mi potrzebne jedynie żeby chwilowo je obserwować .

Chociaż myślę czy jako ciąg znaków pewnie będę mógł zapisywać , ale jest jeden problem jak np użytkownik naciśnie po kolei pięć cyfr "2" "3" "7" "3" i "8" to układ musi zignorować "2" "3" "7" "3"
a zostawić jedynie "8" poniewż jest przepełnienie - jakbym wynik miał w liczbie to daje warunek po czwartym naciśnięciu if(licznik>9999) licznik=0; a jak będę bazował tylko na znakach to jak to układ rozróżnie ?

A może wrzucić do zmiennej tablicowej a potem to porównywać?
Podpowiedz jak spróbować zapisać po kolei cyfry do zmiennej np tablicowej w tym konkretnym kodzie programu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2018, o 11:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 546
Pomógł: 0

Dłączenie tak się dzieje ze zmienna wynik może być dodawana do liczby np wynik=wynik+1 jest ok a jak wynik=wynik+wynik to wyskakują wielkie liczby 34567



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 sty 2018, o 13:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1146
Lokalizacja: Kraków
Pomógł: 93

A pokaż cały kod. Z tych wycinków ciężko cokolwiek podpowiedzieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 sty 2018, o 15:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 546
Pomógł: 0

Kod w pętli głównej while pokazałem wcześniej teraz pokaże początek programu:

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


Podpowiedzcie dlaczego zmnenna się tak dziwnie zachowuje???



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO