• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program do nauki słówek

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
576 wizyt
pytanie zadane 17 lutego 2019 w C# przez Archeon Początkujący (480 p.)

Dzień dobry,

 

Jestem w trakcie pisania programu do nauki słówek.  C# okienkowy.

 

Opis działania programu:

- Za pomocą przycisków wskaż lokalizacje plików tekstowych ze słowkamiANG i PL. (dwa osobne pliki)

- Kliknij przycisk start aby rozpocząć program

- w labelu pojawia się pierwsze słówko z tablicy 

- do textboxa wprowadzam tłumaczenie słowka i wyskakuje MessageBox "OK" lub "ŹLE"

I w tym miejscu pojawia się problem. Program zamiast za każdym razem czekać aż wprowadzę nowe słowko do textboxa to się zapętla, pytania w labelu się zamieniają i wyświetla MessageBox'y.

Oto kod w przyciusku:

private void sprawdzButton_Click(object sender, EventArgs e)
        {
            BazaSlow.bazaPolskichSlowek = _fileReader.Read(adresPlikuPL);
            BazaSlow.bazaAngielskichSlowek = _fileReader.Read(adresPlikuANG);
            string odpowiedz = odpTextBox.Text;
            int i = 0;

            while (i < BazaSlow.bazaPolskichSlowek.Length)
            {
                trescSlowkaLabel.Text = BazaSlow.bazaPolskichSlowek[i];
                
                if (odpowiedz.Equals(BazaSlow.bazaAngielskichSlowek[i].ToLower()))
                {
                    MessageBox.Show("OK");
                }
                else
                {
                    MessageBox.Show("ŹLE");
                }
                i++;

            }

        }

 

komentarz 17 lutego 2019 przez NowyUrzydgownig Mądrala (5,090 p.)
Obecnie twoja metoda, wczytuje dane z dwóch plików, następnie pobiera tekst z odpTextBox. Następnie ustawia tekst trescSlowkaLabel(Tutaj nie ma to zbytnio sensu). Potem porównuje stringa odpowiedz ze stringiem z bazaAngielskichSlowek[i] - wykonuje te czynności, ponieważ dałeś je w pętli while - to oznacza, że będzie je powtarzał dopóki warunek jest spełniony.
komentarz 17 lutego 2019 przez Archeon Początkujący (480 p.)

Tak tyle to już wiem :P

1 odpowiedź

0 głosów
odpowiedź 17 lutego 2019 przez Velta Maniak (52,830 p.)

- Za pomocą przycisków wskaż lokalizacje plików tekstowych ze słowkamiANG i PL. (dwa osobne pliki)

Po co trzymać w dwóch osobnych plikach tekstowych? Narażasz się na problem braku spójności angielskiego słowa z tłumaczeniem, jeżeli dodasz ich więcej. Nie prościej będzie to załatwić na przykład plikiem CSV?

- Kliknij przycisk start aby rozpocząć program

Intuicyjność! Niech ładuje od razu po uruchomieniu programu, a nie kliknięciu przycisku.

I w tym miejscu pojawia się problem. Program zamiast za każdym razem czekać aż wprowadzę nowe słowko do textboxa to się zapętla, pytania w labelu się zamieniają i wyświetla MessageBox'y.

Bo przy kliknięciu w przycisk sprawdzButton wypisujesz od razu wszystkie elementy tablicy (dopóki wciąż inkrementowane i nie osiągnie rozmiaru zapełnionej tablicy).

Powinieneś gdzieś trzymać informację o obecnym indeksie tablicy lub numerze słowa (w którymś labelu?), zinkrementować liczbę po wyświetleniu informacji o poprawności tłumaczenia i załadować kolejny element (lub jakakolwiek inna decyzja, jeżeli na przykład skończy się zasób słów), bez użycia jakiejkolwiek pętli.

Podobne pytania

0 głosów
3 odpowiedzi 237 wizyt
0 głosów
1 odpowiedź 1,021 wizyt
0 głosów
4 odpowiedzi 471 wizyt

93,432 zapytań

142,428 odpowiedzi

322,661 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...