• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z wyświetleniem danych
#1
Cześć.
Mam taki problem.

Potrzebuję  liczbę 1234 rozdzielić na 2 człony
1 człon(A) =(cyfta 3 oraz 4) = 34
2 człon(B) =(cyfta 1 oraz 2) = 12

dodatkowo każda cyfra musi być jako uint8_t

zmajstrowałem coś takiego
Kod:
long integer = 1234;
uint8_t digits[7]; //7 na wypadek większej liczby
for(int i = 0; i < 7; i++){
     digits[i] = integer % 10; 
     integer /= 10;    
Serial.print(digits[i]);

Na serialu otrzymuję liczbę 4321000

Teraz chciałbym wkleić  poszczególne cyfry do programu

Kod:
A = (digits[1], digits[0]);
B = (digits[3], digits[2]);

Serial.print("A-"); Serial.println(A);
Serial.print("B-"); Serial.Println(B);

Na wyjściu A otrzymuję  cyfrę  4 zamiast liczby 34
Na wyjściu B otrzymuję  cyfrę  2 zamiast liczby 12

Jak to rozwiązać ??
 
Odpowiedź
#2
Ja napisałem to w ten sposób i działa bez problemu, ale zaznaczam że ta metoda nie jest najszybsza.
Edit: poprawiam kod bo przy liczbie większej niż 9999 liczba a będzie większa niż 99.
Kod:
void setup() {
  Serial.begin(9600);
  delay(100);
  long wej = 91234;

  byte a, b;
  a = long(wej%10000) / 100;
  b = long(wej) % 100; // reszta z dzielenia
  Serial.print("A-"); Serial.println(a);
  Serial.print("B-"); Serial.println(b);
}
Pozdrawiam.
 
Odpowiedź
#3
Dzięki za odpowiedź kod działa ale problem jest z wyświetlaniem małych wartości do 10 pokazuje takie krzaki Sad
           

Wygląda na to że nie mogę używać mnożenia, dzielenia i innych.
Muszę podstawić cyfry osobno

A = (3)(4) cyfra
B = (1)(2) cyfra
 
Odpowiedź
#4
(29-04-2020, 20:01)Osiasty napisał(a): Dzięki za odpowiedź kod działa ale problem jest z wyświetlaniem małych wartości do 10 pokazuje takie krzaki Sad


Wygląda na to że nie mogę używać mnożenia, dzielenia i innych.
Muszę podstawić cyfry osobno

A = (3)(4) cyfra
B = (1)(2) cyfra
Wiesz co może zamień te liczby a i b z byte do unsigned int albo long bo może się zmienne przeładowują.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości