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

Kolejny problem - mieszanka lekcji

Ostatnio zmodyfikowano 2011-02-19 11:27
Autor Wiadomość
Yakuzaf
Temat założony przez niniejszego użytkownika
Kolejny problem - mieszanka lekcji
» 2011-02-19 11:11:25
Znów mam problem. Chciałem zrobić ładny kalkulator z menu. Problem jest taki, że kiedy np. wpisuję 2 i enter (co odpowiada za część kalkulatora w której się odejmuje) to cały czas zaczyna od 1. Wygląda to tak:

1 Dodawanie
2 Odejmowanie
3 Mnozenie
4 Dzielenie
5 Rezygnuj

Kiedy wpisuję 2, wyskakuje:

Podaj 1 liczbe:
WPISUJĘ
Podaj 2 liczbe:
WPISUJĘ

I tu wychodzi dodawanie czyli x+y, a nie x-y.

A tu kod:
C/C++
#include <iostream>
#include <conio.h>

int main()
{
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 4;
    int e = 5;
    int f;
    int g;
    int liczba;
   
    std::cout << "Kalkulator \n [1] Dodawanie \n [2] Odejmowanie \n [3] Mnozenie \n [4] Dzielenie \n [5] Rezygnuj " << std::endl;
    std::cin >> liczba;
   
    if( liczba = 1 )
    switch( a )
    {
    case 1:
        std::cout << "\n\b Podaj pierwsza liczbe" << std::endl;
        std::cin >> f;
        std::cout << "\n\b Podaj druga liczbe" << std::endl;
        std::cin >> g;
        std::cout << "\n\b Wynik to: " << f + g << std::endl;
        break;
    }
    if( liczba = 2 )
    switch( b )
    {
    case 2:
        std::cout << "\n\b Podaj pierwsza liczbe" << std::endl;
        std::cin >> f;
        std::cout << "\n\b Podaj druga liczbe" << std::endl;
        std::cin >> g;
        std::cout << "\n\b Wynik to: " << f - g << std::endl;
        break;
    }
   
    if( liczba = 3 )
    switch( c )
    {
    case 3:
        std::cout << "\n\b Podaj pierwsza liczbe" << std::endl;
        std::cin >> f;
        std::cout << "\n\b Podaj druga liczbe" << std::endl;
        std::cin >> g;
        std::cout << "\n\b Wynik to: " << f * g << std::endl;
        break;
    }
   
    if( liczba = 4 )
    switch( d )
    {
    case 4:
        std::cout << "\n\b Podaj pierwsza liczbe" << std::endl;
        std::cin >> f;
        std::cout << "\n\b Podaj druga liczbe" << std::endl;
        std::cin >> g;
        std::cout << "\n\b Wynik to: " << f / g << std::endl;
        break;
    }
   
    if( liczba = 5 )
    switch( f )
    {
    case 4:
        std::cout << "\n\b Koniec" << std::endl;
    }
   
    getch();
    return 0;
}
P-28388
DejaVu
» 2011-02-19 11:15:42
C/C++
if( liczba = 2 )
W kursie było napisane, że znak = w operacji porównania jest częstym błędem popełnianym przez początkujących programistów. Ciebie to również dotknęło.

PS. Robienie switch ... case dla jednego przypadku nie ma najmniejszego sensu.
P-28389
Yakuzaf
Temat założony przez niniejszego użytkownika
» 2011-02-19 11:19:16
Czyli mam dodać jedną zmienną 0, a resztę poprawić na if( 1 > 0 ) , if( 2 > 0 ) itp?
Czy jakoś inaczej?
P-28390
DejaVu
» 2011-02-19 11:27:15
P-28393
« 1 »
  Strona 1 z 1