Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[Matlab] Problem z kodem kalkulatora (if/else i switch)

#1
[Matlab] Problem z kodem kalkulatora (if/else i switch)
Hej, mam problem z zadaniem.

Mam napisać (prosty) kalkulator z wykorzystaniem funkcji if/else oraz switch/case. Sprawa wydaje się prosta, niestety moje rozwiązanie nie jest akceptowane przez wykładowcę. Czy ktoś mógłby mi pomóc?


1) Kod programu pierwotny: http://pastebin.com/rahEW065
Co było dla prowadzącego nie tak? Nie chciał bym w kodzie powtarzał instrukcję switch. Ma ona wystąpić tylko jeden raz. Nie mam prawa używać while, for etc. Tylko i wyłącznie mogę jechać na if/else/elseif/end , if/else/end oraz pojedynczej funkcji switch.

2) Kod programu po uwzględnieniu uwag: http://pastebin.com/r0bZKAid

Co mi w nim nie działa? Jakoś nie mogę wykombinować by po dwukrotnym wybraniu ZŁEGO znaku wyświetlał się kod w otherwise. (tak, zakończenie programu musi być wsadzone w otherwise).


Będę wdzięczny za pomoc.
♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣
 System operacyjny: windows_xp_2003 Przeglądarka: chrome
#2
RE: [Matlab] Problem z kodem kalkulatora (if/else i switch)
Cześć
Kod:
clc
clear
disp('Jest to kalkulator wykonujacy dzialania: dodawania, odejmowania, mnozenia, dzielenia i potegowania')
c=input('Podaj znak działania, które program ma wykonać (+,-,*,/,^): ','s');
if isempty(findstr(c, '+-*/^'))
    disp('Podałeś zły znak działania, wprowadź prawidłowy');
    c=input('Podaj znak działania, które program ma wykonać(+,-,*,/,^): ','s');
end
% if isempty(findstr(c, '+-*/^'))
%     disp('Zły znak działania. Koniec programu')
% else
    switch c
        case '+'
            a=input('Podaj jakąś liczbe a= ');
            b=input('Podaj jakąś liczbe b= ');
            wynik=a+b;
            d=round(wynik*100)/100;
            disp(['Dodawanie jest równe ', num2str(d)]);
        case '-'
            a=input('Podaj jakąś liczbe a= ');
            b=input('Podaj jakąś liczbe b= ');
            wynik=a-b;
            d=floor(wynik*100)/100;
            disp(['Odejmowanie jest równe ', num2str(d)]);
        case '*'
            a=input('Podaj jakąś liczbe a= ');
            b=input('Podaj jakąś liczbe b= ');
            wynik=a*b;
            d=floor(wynik*100)/100;
            disp(['Mnożenie jest równe ', num2str(d)]);
        case '/'
            a=input('Podaj jakąś liczbe a= ');
            b=input('Podaj jakąś liczbe b= ');
            if b~=0
            wynik=a/b;
            d=floor(wynik*100)/100;
            disp(['Dzielenie jest równe ', num2str(d)]);
            else
                disp('nie można dzielić przez 0, podaj inną liczbę');
            end
        case '^'
            a=input('Podaj jakąś liczbe a= ');
            b=input('Podaj jakąś liczbe b= ');
            wynik=a^b;
            d=floor(wynik*100)/100;
            disp(['potęgowanie a do b jest równe ', num2str(d)]);

         otherwise
             disp('TU TRZEBA WALNĄĆ JAKĄŚ FUNKCJĘ ŻEBY PO PODWÓJNYM ZŁYM WPISANIU ZNAKU ZAKOŃCZYŁ SIĘ PROGRAM')
             disp('Zły znak działania. Koniec programu')
    end
% end
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: [Matlab] Problem z kodem kalkulatora (if/else i switch)
Niestety, zakończenie programu MUSI być w otherwise. Z if/elsem wiem że działaKwaśny ale wykładowca zabronił.
♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣
 System operacyjny: windows_xp_2003 Przeglądarka: chrome
#4
RE: [Matlab] Problem z kodem kalkulatora (if/else i switch)
Przecież kończy się w switch (wykomentowałem ten warunek).
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#5
RE: [Matlab] Problem z kodem kalkulatora (if/else i switch)
Faktycznie, przepraszam moje niedopatrzenie z tym wykomentowaniem Wesoły.

Btw. mógłbyś mi nieco wyjaśnić budowę:
Kod:
isempty(findstr(c, '+-*/^'))
Bo jeśli mam rozumieć:
isempty <- wyszukuje puste pole
findstr <- znajduje zmienną string (zapisuje ją pod c) i tą zmienną może być tylko + - * / ^.

Dobrze myślę?
♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣
 System operacyjny: windows_xp_2003 Przeglądarka: chrome
#6
RE: [Matlab] Problem z kodem kalkulatora (if/else i switch)
http://www.mathworks.com/help/matlab/ref/isempty.html
http://www.mathworks.com/help/matlab/ref/findstr.html Wesoły
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#7
RE: [Matlab] Problem z kodem kalkulatora (if/else i switch)
Dzięki, nie wiedziałem o helpie online Wow. Zawsze myślałem że jest wbudowany tylko w program.


Do zamknięcia.
♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣♦♣
 System operacyjny: windows_xp_2003 Przeglądarka: chrome
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
matlab kalkulatorkalkulator matlabkalkulator matlab z funkcją ifmatlab prosty kalkulatorkalkulator z switchkalkulator z if w matlabieswitch matlab plkalkulator matlab dzieleniekalkulator dzielenie przez 0 matlabinput znak dodawania odejmowania itp

Podobne wątki ([Matlab] Problem z kodem kalkulatora (if/else i switch))
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [Matlab] Gra "Papier kamień nożyce" samanta19 7 9615 07.04.2017, 15:54
Ostatni post: Szachista
  [ Matlab] metodaHooke-Jeavese znajdz jej minimum piotrek132 0 7009 11.12.2016, 13:12
Ostatni post: piotrek132
  [C] problem z kodem "wyświetlanie gwiazdek" mdb 2 7747 29.10.2016, 20:14
Ostatni post: mdb

Skocz do:


Wybrane wątki ([Matlab] Problem z kodem kalkulatora (if/else i switch))
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Przekazywanie wskaźnika przez referencję w Qt Trojan3000 3 13410 10.12.2019 13:16
Ostatni post: Ajgor
  Proszę o pomoc w uzupełnieniu ankiety dt. Zawodu Programisty MaleMonki 0 3025 17.11.2019 12:47
Ostatni post: MaleMonki
  Spring framework – jakie strony polecacie do nauki? olek23 5 7577 15.11.2019 15:57
Ostatni post: Alsenas
  Programowanie windy (problem) w C++ mysza2323 2 6610 06.11.2019 23:04
Ostatni post: mysza2323
  Programy w C ~Anonim 1 6883 22.10.2019 17:48
Ostatni post: Szachista
  Książki do nauki C# olek23 14 20508 17.10.2019 13:06
Ostatni post: Ajgor
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 8102 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 4545 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 21720 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 7057 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 7836 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 9770 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 9216 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 9204 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 11240 28.04.2019 19:31
Ostatni post: koneton