Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Cześć, od niedawna uczę się C++ z książki "C++ dla każdego" i kursów internetowych. Napisałem sobie prosty kalkulator, ale nie chce przestac mi liczyc ;)

To jest ukryta treść, proszę

Po nacisnieciu 'n' wysyla wiadomosc, ale liczy dalej, probowalem roznych rzeczy, ale nic nie wychodzilo. Prosilbym o pomoc.

PS usunąłem komentarze w kodzie, bo było mało czytelnie. Jeżeli to ważne to piszę w CodeBlocks :)

Edytowane przez ziolakziolo
Opublikowano

Gdy pisze w CB wszystko mam na kolorowo i tez robie "duze odstepy" jednak tutaj nie chcialem za duzo miejsca zuzywac, co do twojego kodu to zauwazylem ze piszesz

if(znak!='1' && znak!='2' && znak!='3' && znak!='4' && znak!='5')

Ja bym napisal if

To jest ukryta treść, proszę

Pisze sie szybciej i wg mnie widoczniej, jednak moje pytanie brzmiało co zrobic aby moj kalkulator wylaczyl sie po nacisnieciu 'n' w instrukcji if po przeliczeniu dzialania.

Moze Up ma racje i zmienie ze spoilera na code :)

Opublikowano (edytowane)

ehh banalny blad, no ale poczatkujacy to wybacze ;)

 

To jest ukryta treść, proszę

 

Po pierwsze nie uzywaj w taki sposob if jesli sprawdzasz pewne warunki ktore sa ze soba zbiezne operuja na tym samym zbiorze to lacz je uzywajac else if i dla kazdego innego przypadku czyli dla ciebie ostatni if piszemy else. U ciebie po podaniu np. 2 jako dzialanie byl sprawdzany warunek pierwszy false potem drugi ok wchodzi do funkcji wykonuje ja, wczytuje literke i oO co sie stalo niezaleznie od podanej litery wchodzi do ostatniego ifa bo jest on sprawdzany. Jesli uzywasz else if jesli sprawdzony zostanie warunek i bedzie on poprawny to po wykonaniu tego co bedzie w nim program automatycznie skacze jakby poza calego ifa. Do czystosci kodu sie nie bede czepial kazdy pisze jak lubi i jak jemu jest wygodnie.

 

To sie tyczy calego kodu, ja poprawilem tylko ostatni fragment. Osobiscie zrobilbym to w switchu i w celu zapetlenia uzyl petli while. Jak widze kolega wyzej robi ten sam blad. Procesor niepotrzebnie sprawdza wszystkie warunki. No i tak przy okazji nie trzeba predefiniowac funkcji w c++ na poczatku programu. Przydaje sie to przy wiekszych programach, gdzie jedna funkcja korzysta z drugiej, wtedy program na starcie juz "zna" wszystkie funkcje.

Edytowane przez Krycho
Opublikowano

Switch nie jest taki dobry, juz przy wiekszych projektach sie nie sprawdza, a pozatym uzywa liczb calkowitych do identyfikacji. If..else to trzeba opanowac, jezeli ma byc ona zagniezdzana to lepiej juz uzyc if if if niz pozniej szukac tych klamer ;) Ja jakis super nie jestem jeszcze trawie I tom symfonii

33f98x4.png


Opublikowano

Oczywiscie ze case przy wiekszych projektach tez sie sprawdza, tylko jest on dobry do pewnych zadan a do innych nie. Trzeba go umiejetnie uzywac i wiedziec jak dziala. Oczywiscie ze operuje tylko na liczbach calkowitych i to jest maly minus, ale ma tez swoje plusy. Nie bede omawial dziala bo to nie miejsce na to. Uzywanie else if zamiast samych if if if, to nie jest problem bo klamer jest tyle samo tylko procesor ma mniej roboty, a trzeba oszczedzac procesor i pamiec. Nas zawsze ucza zeby pisac kod jak najbardziej wydajny i optymalny, zeby zuzywal jak najmniej pamieci.

×
×
  • Dodaj nową pozycję...