• 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
Dodanie elementu do tablicy String gdy ów w niej nie występuje
#1
Cześć

Mamy tablicę 
Kod:
String * tabZalogowani;

jak ją przelecieć Tongue i wywalić powtarzające się String'i Wink

Lub podczas dodawania String'a sprawdzić czy takie coś już w nim jest. Jeśli tak to nie dodawaj, jeśli nie dodawaj do tablicy
 
Odpowiedź
#2
Dwa słowa klucze.
1) Pętla for.
2) Warunek porównania IF($string==$string)
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#3
Możesz użyć =+ albo+= dokładnie nie pamiętam.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#4
(13-04-2018, 12:31)tombag napisał(a): jak ją przelecieć Tongue i wywalić powtarzające się String'i Wink

Lub podczas dodawania String'a sprawdzić czy takie coś już w nim jest. Jeśli tak to nie dodawaj, jeśli nie dodawaj do tablicy

"Przelecieć" można przez strstr.
Kod:
if ( strstr( wskażnik_na_ciąg1, wskażnik_na_ciąg2 )
{
strcat( wskaźnik_na_ciąg1, wskaźnik_na_ciąg2 );  // Dodajemy
}
else
{
//nie dodajemy
}

(13-04-2018, 15:07)Robson Kerman napisał(a): 2) Warunek porównania IF($string==$string)

W PHP to zadziała, w Basic też. Porównanie strignów w C przez proste == nie zadziała bo porównane będą dwa wskaźniki a skoro teksty są w różnych miejscach w pamięci, to wynikiem zawsze będzie fałsz. W c porównanie wykonuje się instrukcją
Kod:
if( !strcmp( string1, string2) )
{

}
W C zmienna nie może zaczynac się od znaku $, operator też.
Arduino ma pewne ułatwienia, udziwnienia więc zapytam z ciekawości (szukając pobieżnie nie znalazłem odpowiedzi) można używać $string?

(13-04-2018, 18:27)adix napisał(a): Możesz użyć =+ albo+= dokładnie nie pamiętam.


Kod:
+=
Wszystkie operatory moga być używane w takiej postaci
Kod:
-=
*=
<<=
>>=

itd ale nie (mowa o C, C++) na stringach, do tego służy strcat. Tu znów pytanie, może w Arduino jest to dopuszczalne?
 
Odpowiedź
#5
Panie es2, może zainstaluje Pan sobie Arduino i to sprawdzi, skoro już tu jest? W Arduino można używać większości funkcji C , jako że C++ jest w dużym stopniu z nim zgodny, jednak nie można używać funkcji  C do elementów języka dodanych dopiero w C++. W C nie było klasy String, tylko tablice znaków. Trzeba by najpierw użyć konwersji do "C stringa" string.toCharArray(buf, len) i potem można używać funkcji C na tablicy znaków z C. Niestety składnia jest taka:
Kod:
if( !strcmp( string1, string2) )
{

}
Po dekadach rutyny eksperci zapominają podstaw, czasem warto wrócić do źródeł.
W stringach C++ w Arduino można używać operatorów porównania np. == lub funkcji string1.equals(string2), to jest równoważne. Więcej o C++ w Arduino tutaj: https://www.arduino.cc/reference/en/lang...ingobject/ , a o C tutaj: https://pl.wikibooks.org/wiki/C/Napisy - przynajmniej ja tu się uczę nowych funkcji i polecam.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#6
Dziękuje Wszystkim za odpowiedz jak znajdę trochę czasu żeby przetestować porady wybiorę najkorzystniejsza dla mnie opcję Smile
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości