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

Niewielki kalkulator || Sprawdzenie zadania.

Object Storage Arubacloud
+1 głos
568 wizyt
pytanie zadane 8 stycznia 2016 w C i C++ przez Krzychu Użytkownik (640 p.)

Treść zadania:

Napisz niewielki kalkulator, który pobiera na wejściu jeden z operatorów arytmetycznych oraz dwa argumenty, po czym wyświetla wynik obliczeń otrzymanych na podstawie tych danych.
 

Rozwiązanie:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string moj_operator;
    int liczba_1, liczba_2, wynik;
    cout<<"Podaj operator arytmetyczny: ";
    cin>>moj_operator;
    if((moj_operator=="+")||(moj_operator=="-")||(moj_operator=="/")||(moj_operator=="*"))
    {
        cout<<"Podaj pierwsza liczbe: ";
        cin>>liczba_1;
        cout<<"Podaj druga liczbe: ";
        cin>>liczba_2;

    if (moj_operator=="/")
    {
        wynik=liczba_1/liczba_2;
        cout<<wynik;
    }

    if (moj_operator=="*")
    {
        wynik=liczba_1*liczba_2;
        cout<<wynik;
    }

    if (moj_operator=="+")
    {
        wynik=liczba_1+liczba_2;
        cout<<wynik;
    }

    if (moj_operator=="-")
    {
        wynik=liczba_1-liczba_2;
        cout<<wynik;
    }
    }
    else
    {
        cout<<"Niepoprawny operator";
    }

    cin.ignore();
    cin.get();
}

Witam napisałem taki właśnie kod. Zastanawiam się czy zadanie rozwiązałem w miarę dobrze. Obecnie zaczynam zapoznawać się z pętlami. Oczywiście znalazłem teraz rozwiązanie z użyciem przełącznika, swoją drogą o wiele lepsze. Z góry dziękuje za pomoc, cenne rady. Wytłumaczenie co robię źle. Dopiero zaczynam więc nie chce już na początku wpajać sobie złe nawyki.

3 odpowiedzi

+1 głos
odpowiedź 8 stycznia 2016 przez Mariusz O Mądrala (5,290 p.)
Można się ew. przyczepić do dzielenia. Spróbuj wprowadzić 5/0. A jak na początki to całkiem dobrze. :)
komentarz 8 stycznia 2016 przez Mariusz O Mądrala (5,290 p.)

Dodatkowo:

if( ... ) {
 // A
 // B
}

if( ... ) {
 // C
 // B
}

if( ... ) {
 // D
 // B
}

można zamienić na:

if( ... ) {
 // A
}

if( ... ) {
 // C
}

if( ... ) {
 // D
}

// B

A nawet...

if( ... ) // A
if( ... ) // C
if( ... ) // D

// B

Gdzie // X to zestaw instrukcji.

pytanie zadane 8 stycznia 2016 w C i C++ przez Krzychu Użytkownik (640 p.) Prosty kalkulator || Ponowne sprawdzenie kodu.
+1 głos
odpowiedź 8 stycznia 2016 przez Szykem2 Nałogowiec (29,510 p.)

Niektórzy uważają że stado if'ów do tak prostego programu jest złym nawykiem ponieważ nie jest to zbyt wydajne rozwiązanie. Ale do rzeczy: Kombinujesz dobrze tylko nie jest potrzebne zaprzęganie klasy string do tego programu. Znacznie wydajniejsze jest użycie zwykłej zmiennej typu char i jak porównujesz to trzeba używać pojedynczych nawiasów.

char znak;
cin >> znak;
switch(znak)
{
    case '+':    //robi praktycznie to samo co if(znak=='+')
    {
        //...
        break;
    }
    //...
    default:
    {
       / /...
        break;
    }
}

 

0 głosów
odpowiedź 8 stycznia 2016 przez Krzychu Użytkownik (640 p.)

Dziękuje za odpisałeś. Poprawiłem kod. Mam nadzieję że twoje porady dobrze wprowadziłem w życie.

 

#include <iostream>

using namespace std;

int main()
{
    char znak;
    int liczba_1, liczba_2;
    cout<<"Podaj operator arytmetyczny: ";
    cin>>znak;
    cout<<"Podaj pierwsza liczbe: ";
    cin>>liczba_1;
    cout<<"Podaj druga liczbe: ";
    cin>>liczba_2;

switch(znak)
{
    case '/':
    {
        if(liczba_2 != 0)
        cout<<liczba_1/liczba_2;
        else
        cout<<"Nie dziel przez 0";
        break;
    }
    case '*':
    {
        cout<<liczba_1*liczba_2;
        break;
    }
     case '+':
    {
        cout<<liczba_1+liczba_2;
        break;
    }
     case '-':
    {
        cout<<liczba_1-liczba_2;
        break;
    }

}
    cin.ignore();
    cin.get();
}

 

komentarz 8 stycznia 2016 przez Szykem2 Nałogowiec (29,510 p.)
Wygląda dobrze tylko dla przejrzystości dodałbym odstęp w całej instrukcji switch. Czytaj linijki 16-42 jeden tab(lub 4 spacje) w prawo.
komentarz 8 stycznia 2016 przez Krzychu Użytkownik (640 p.)

Mam nadzieję że dobrze zrozumiałem.

#include <iostream>

using namespace std;

int main()
{
    char znak;
    int liczba_1, liczba_2;
    cout<<"Podaj operator arytmetyczny: ";
    cin>>znak;
    cout<<"Podaj pierwsza liczbe: ";
    cin>>liczba_1;
    cout<<"Podaj druga liczbe: ";
    cin>>liczba_2;

    switch(znak)
{
    case '/':
    {
        if(liczba_2 != 0)
        cout<<liczba_1/liczba_2;
        else
        cout<<"Nie dziel przez 0";
        break;
    }
    case '*':
    {
        cout<<liczba_1*liczba_2;
        break;
    }
     case '+':
    {
        cout<<liczba_1+liczba_2;
        break;
    }
     case '-':
    {
        cout<<liczba_1-liczba_2;
        break;
    }

}
    cin.ignore();
    cin.get();
}

 

komentarz 8 stycznia 2016 przez Szykem2 Nałogowiec (29,510 p.)
tak tylko jeszcze nawiasy klamrowe w linijkach 17 i 42 nie żebym się czepiał ale to naprawdę poprawia jakość i czytelność kodu.

Podobne pytania

0 głosów
2 odpowiedzi 6,177 wizyt
+1 głos
3 odpowiedzi 1,251 wizyt
+3 głosów
4 odpowiedzi 389 wizyt
pytanie zadane 25 czerwca 2018 w Nasze projekty przez Danrox Bywalec (2,370 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...