Jak sprawdzić czy zmienna jest większa od ostatniego indeksu listy?

0

Mam zmienną:
i=-1
przycisk, którego kliknięcie powoduje
i++
Teraz pytanie jak sprawdzić, czy zmienna i jest większa od od ostatniego indeksu listy. Na przykład zmienna i=11, lista[10] i wtedy wyświetla się odpowiedni komunikat.

 
        public void sprawdzCzyWszystkie(List<string> słowaPl, List<string> słowaAng, int index)
        {
            if (index > listaPl.Count && index > listaAng.Count)
            {
                MessageBox.Show("To już wszystkie słowa z tego działu, Komunikat");
                //i = -1;
                
            }
            
        }

Tylko, że Count jak dobrze pamiętam to był rozmiar listy, a czy jest jakiś prosty sposób by poznać wartość ostatniego indeksu tablicy? Teraz komunikat się nie pojawia, jak słowa się skończą to potem pojawiają się od początku, a pasuje powiadomić użytkownika, że to już się powtarza drugi raz.

0

Indeks ostatniego elementu to Count-1
Więc coś w stylu: if i>=Count-1 then (ostatni element)

0
        //metoda sprawdzająca czy to już wszystkie słowa
        public void sprawdzCzyWszystkie(List<string> słowaPl, List<string> słowaAng, int index)
        {
            if (index >= słowaPl.Count-1 && index >= słowaAng.Count-1)
            {
                MessageBox.Show("To już wszystkie słowa z tego działu, Komunikat");
                //i = -1;
                
            }
            
        }
 
 
sprawdzCzyWszystkie(listaPl, listaAng, i);

Zastanawia mnie dlaczego dalej ten komunikat się nie pojawia, tylko program od razu leci od początku listy.

0

A czy slowaPl i słowaAng zawsze mają taki sam rozmiar?

1

Zrób if (index >= słowaPl.Count-1 || index >= słowaAng.Count-1) to nie będzie grało roli czy mają taki sam rozmiar.

A czy wiesz że to co chcesz zrobić możesz równie dobrze zrobić za pomocą
Dictionary<string,string>
I wszystkie szukanie itd masz zrobione bez lini kodu :p

0

Poprawiłem, ale komunikatu dalej nie ma. Tak słyszałem o tym, ale za mało o tym wiem jak tego używać.

0
qwerty napisał(a)

Zrób if (index >= słowaPl.Count-1 || index >= słowaAng.Count-1) to nie będzie grało roli czy mają taki sam rozmiar.

Będzie miało znaczenie i to bardzo duże, ponieważ jeśli słowaPl mają inny rozmiar niż słowaAng, to komunikaz zostanie wyświetlony jeśli skończy się jedna lista, a nie dwie.

Tak że jeśli słowaPl ma 10 itemów, a słowaAng ma 5 itemów, komunikat zostanie wyświetlony gdy dojedzie do itemu piątego, czyli indeksu 4.

marcin_gc, jeśli obie listy zawsze mają taką samą ilość itemów, możesz sprawdzać dwie listy w jednym czasie (czyli w jednym warunku). Jeżeli jednak listy mają różną ilość łańcuchów, nie możesz ich sprawdzać naraz.

Nie koduję w C więc algorytmu Ci nie napiszę, ale mam jedną wskazówkę - jeżeli obie listy mają dynamicznie przydzielaną zawartość (czyli nie da się przewidzieć, czy będą miały taką samą ilość łańcuchów) sprawdzaj, czy którakolwiek lista według inkrementowanego indeksu osiągnęła koniec. Jeśli tak, sprawdzaj później tylko tą drugą, a pierwszą pozostaw.

Napisz jeszcze dokładnie jakie to ma zastosowanie.

PS. Ja bym się jeszcze zastanowił nad tym warunkiem:

if (index >= słowaPl.Count-1 || index >= słowaAng.Count-1)

Możliwe, że to ma znaczenie, sprawdź to:

if ((Index>= slowaPl.Count - 1) || (Index >= slowaAng.Count - 1))

Nie ma siły, żeby teraz komunikat nie wyskoczył jak napotka ostatni indeks w którejkolwiek liście.

0

Ja wolę uważać z nawiasami przy warunkach. Za każdym razem, gdy w swoich programach układam warunki, każdego wrzucam do nawiasów. Ładniejszy zapis jest owszem, ale i później nie muszę szukać, czy jest w nich jakiś mankament.

0

Zwłaszcza, że w różnych językach różna jest hierarchia operatorów. Nawet między C a C++ są jakieś niuansy. Dlatego lepiej dawać za dużo nawiasów niż za mało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1