Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

nyac55

C# - Program Kalkulator w obiektowym z Odwróconą Notacją Polska?

Polecane posty

Ja się nie znam, a do tego momentu programowania jeszcze wiele mi brakuje, ale jeśli to pomocne, to sygnalizuję, że gdy uruchomię sobie ten kalkulatorek przez aplikację, to każde kliknięcie "Zatwierdź" bądź "=" kończy się wyjątkami typu "nieprawidłowy format strumienia wejściowego" lub "stos jest pusty".

Link do komentarza
Udostępnij na innych stronach

Najpierw należy podać dane jeśli tego nie zrobisz to nie możesz zatwierdzić, (podajesz 2 liczby: 1 liczba zatwierdzasz, 2 liczba zatwierdzasz, znak zatwierdzasz) na końcu = . Po = jak chcesz robić operacje na wyniku backspace'm czyścisz text Boxa i możesz wporwadzić wartość wtedy 1 wartość to poprzedni wynik, 2 wartość to podana liczba i znowu =. Jeśli podasz więcej niż 2 argumenty i 1 znak program może wyrzucać błędy wyjątków, tak samo jak na początku naciśniesz od razu zatwierdź, bądź =. Program nie miał być "idiotoodporny" miał tylko pokazywać, że coś się umie zaprogramować - tak myślę. :)

Myślę, że odpowiedziałem na twoje pytanie.

Link do komentarza
Udostępnij na innych stronach

Co nie zmienia faktu, że w kodzie próbujesz się przed taką sytuacją zebezpieczyć, ale robisz to niepoprawnie. A przy oddawaniu projektu może się zdarzyć, że zostaniesz poproszony o naprawienie tego błędu - będziesz w stanie to zrobić?

Link do komentarza
Udostępnij na innych stronach

Moim zdaniem, raczej nie zostanę o to poproszony ponieważ pan jest "lajtowy", gdyby ktoś inny to prowadził mogło by tak być. Jednak jeżeli coś wymagałoby poprawy na pewno pozwoliłby dokończyć w domu i donieść. Aczkolwiek warto było by coś takiego umieć i zrobić.

zostaniesz poproszony o naprawienie tego błędu - będziesz w stanie to zrobić?
Myślę, żę jakiś pomysł zawsze by się znalazł. Gorzej z realizacją i pewnie by mi się to nie udało.

_+_+_

W takim razie co powinienem zrobić, aby uniknąć tego rodzaju błędów. Zastosować jakiś licznik, zliczający na której pozycji wciskamy zatwierdź, bądź = . Czy można to zrobić jakoś inaczej i prościej?

Link do komentarza
Udostępnij na innych stronach

Jeśli chodzi o metodę wynik, chciałem zrobić coś takiego:


public String wynik()
{
if (_stos.Count == 0)
return "Nie ma nic na stosie";
//_stos.
else
{
string error = "error";
string wynik2 = Convert.ToString(_stos.Peek());
if (_stos.Count == 1)
{
return wynik2;
}
else //if(_stos.Count!=1)
{
//string error = "error";
return error;
}
}
//return wynik2;

Jednak to nie działa. Czy może muszę skorzystać ze zwróconej wartości typu bool z metody Add?

Link do komentarza
Udostępnij na innych stronach


if (_calculator.Add(liczba) == "")

jest równie skuteczne, co


if (false)

bo metoda Add zwraca wartość typu bool. Zresztą nie bardzo rozumiem, do czego takie wywołanie ma służyć.

Problemem jest wywoływanie


_stos.Peek()

przed upewnieniem się, że na stosie jest jakaś liczba.

Przy okazji zauważyłem, że program wysypuje się po wciśnięciu "Zatwierdź", jeżeli textBox1 jest pusty. Byłoby dobrze to obsłużyć albo po stronie GUI, albo w metodzie Add.

Link do komentarza
Udostępnij na innych stronach

Obecnie przycisk Zatwierdź nie generuje błędu wyjątku:

https://www.dropbox....1_GUI v.3.1.rar

Muszę poprawcować jeszcze nad klawiszem =.

_+_+_

Obecnie obydwa klawisze są obsłużone i nie wyrzucają błędów wyjątku:

https://www.dropbox....1_GUI v.3.2.rar

Jednak niestety błędy są przy sprawdzaniu elementów stosu oraz program cały czas generuje komunikat error Devide by Zero.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.

×
×
  • Utwórz nowe...