Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z kalkulatorem (praca domowa, lekcja 15)

Ostatnio zmodyfikowano 2013-07-06 23:51
Autor Wiadomość
Drquantum
Temat założony przez niniejszego użytkownika
Problem z kalkulatorem (praca domowa, lekcja 15)
» 2013-07-03 20:40:21
Witam!
Chciałbym prosić o pomoc z kodem, mam w związku z nim 2 pytania:
1) Dlaczego program zawsze wykonuje oba działania, niezależnie od tego, jaką wartość przypiszę zmiennej?
2) Jak ładnie stworzyć menu wyboru, aby każde działanie było w oddzielnej linijce?
Oto kod:
C/C++
#include <iostream>
int main()
{
    using namespace std;
    cout << "Dodawanie - 1";
    cout << "Dzielenie - 2";
    int dzialanie;
    cout << "Podaj dzialanie: ";
    cin >> dzialanie;
    if( dzialanie == 1 )
    {
       
        do
        {
            int liczba1, liczba2;
            cout << "Podaj liczbe1: ";
            cin >> liczba1;
            cout << "Podaj liczbe2: ";
            cin >> liczba2;
            cout << "Dodawanie: " << liczba1 + liczba2 << endl;
            dzialanie--;
        } while( dzialanie == 1 );
       
    }
   
    if( dzialanie == 2 );
   
    {
       
        do
        {
            int liczba1, liczba2;
            cout << "Podaj liczbe1: ";
            cin >> liczba1;
            cout << "Podaj liczbe2: ";
            cin >> liczba2;
            cout << "Odejmowanie: " << liczba1 - liczba2 << endl;
            dzialanie++;
        } while( dzialanie == 2 );
       
    }
   
    return 0;
P-86914
pekfos
» 2013-07-03 20:41:35
Masz średniki po warunkach.

2) Jak ładnie stworzyć menu wyboru, aby każde działanie było w oddzielnej linijce?
endl?
P-86915
MrPoxipol
» 2013-07-03 20:50:30
Nie potrzebnie powtarzasz wszystko dla każdego typu działania. Zamiast if'ów lepiej użyć switch. Pętla do..while w Twoim przypadku nie ma sensu, niepotrzebnie też zwiększasz zmienną dzialanie.
P-86916
Axel
» 2013-07-03 22:29:13
Tak jak powiedział kolega wyżej, do menu użyj switch, a potem zależnie od wyboru zrób działania.
P-86924
kubek3898
» 2013-07-04 08:55:12
Ja samo menu tworzę tak:

C/C++
const int ELEMENTS = X; // Ilosc 'opcji' w menu
string menu[ ELEMENTS ] = { "Dodawanie", "Odejmowanie", "itd.", "itd." };

// Wyswietlanie menu
for( int i = 0; i < sizeof( menu ) / sizeof( string ); i++ )
{
    cout <<( i + 1 ) << ". " << menu[ i ] << endl;
}
// To samo inaczej
for( int i = 0; i < ELEMENTS - 1; i++ )
{
    cout <<( i + 1 ) << ". " << menu[ i ] << endl;
}

Obsługę menu najprościej chyba zrobić za pomocą switch'a, jak już mówiono:

C/C++
int wybierz_dzialanie;
cin >> wybierz_dzialanie;
switch( wybierz_dzialanie )
{
case 1:
    // Obsluga dodawania
    break;
case 2:
    // Obsluga odejmowania
    break;
case 3:
    // itd.
    break;
}
P-86933
Bajt
» 2013-07-04 10:10:29
@kubek3898
Po co utrudniać sobie życie? Czy nie lepiej użyć switch'a lub if'ów, żeby zrobić menu?
Poza tym,  w Twoim kodzie jest pewien błąd. Mianowicie:
C/C++
const int ELEMENTS = 2; // Ilosc 'opcji' w menu
string menu[ ELEMENTS ] = { "Dodawanie", "Odejmowanie", "itd.", "itd." };
W drugiej linijce nie może być "itd", "itd.", bo tablica jest 2-elementowa i przekroczyłbyś jej zasięg.
P-86935
kubek3898
» 2013-07-04 13:07:19
Tą dwójkę, dałem jako przykład, prawdę mówiąc zastanawiałem się czy określić ją jakąś przykładową liczbą czy po prostu X'em. Dlatego dałem obok komentarz, który chyba jasno określa, jak zainicjalizować tą zmienną. Także żadnego błędu świadomie nie popełniłem.

Może i łatwiej zbudować to menu za pomocą instrukcji warunkowych, lecz myślę, że definicja tego w taki sposób, ułatwi jego modyfikację przy późniejszych zmianach.
P-86957
Drquantum
Temat założony przez niniejszego użytkownika
» 2013-07-06 23:51:41
Dziękuję wszystkim za pomoc, pozdrawiam.
P-87185
« 1 »
  Strona 1 z 1