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

[C++] Rozdział 14 "Sterowanie przebiegiem programu za pomocą instrukcji switch ... case oraz omówienie działania instrukcji sterującej break." Praca Domowa Kalkulator

Ostatnio zmodyfikowano 2017-01-18 15:58
Autor Wiadomość
DawSkii
Temat założony przez niniejszego użytkownika
[C++] Rozdział 14 "Sterowanie przebiegiem programu za pomocą instrukcji switch ... case oraz omówienie działania instrukcji sterującej break." Praca Domowa Kalkulator
» 2016-12-28 21:22:41
Dzień Dobry wszystkim!!! Mam mały problem z moim programem :
C/C++
#include <iostream>
using namespace std;
int main()
{
   
    int a;
    int b;
    int wynik1 = a + b;
    int wynik2 = a - b;
    int wynik3 = a * b;
    int wynik4 = a / b;
    cout << "Podaj liczbe a:" << endl;
    cin >> a;
    cout << "Podaj liczbę b:" << endl;
    cin >> b;
    int spr1;
    switch( spr1 )
    {
    case +:
        cout << a + b = wynik1 << endl;
        break;
    case -:
        cout << a - b = wynik2 << endl;
        break;
    case *:
        cout << a * b = wynik3 << endl;
        break;
    case /:
        cout << a / b = wynik4 << endl;
        break;
    default:
        cout << "Wystapil BLAD!!!" << endl;
       
    }
   
    return 0;
}
Wyskakują mi takie oto logi:



 error: expected primary-expression before ':' token|
 error: invalid operands of types 'int' and '<unresolved overloaded function type>' to binary 'operator<<'|
 error: expected primary-expression before ':' token|
 error: invalid operands of types 'int' and '<unresolved overloaded function type>' to binary 'operator<<'|
 error: expected primary-expression before ':' token|
 error: '*' cannot appear in a constant-expression|
 error: invalid operands of types 'int' and '<unresolved overloaded function type>' to binary 'operator<<'|
 error: expected primary-expression before '/' token|
 error: expected primary-expression before ':' token|
 error: invalid operands of types 'int' and '<unresolved overloaded function type>' to binary 'operator<<'|


Naprawdę nie wiem co z tym zrobić. Proszę o szybką odpowiedź i pomoc.
P-155612
pekfos
» 2016-12-29 23:11:50
Znaki podaje się w apostrofach.

C/C++
int a;
int b;
int wynik1 = a + b;
int wynik2 = a - b;
int wynik3 = a * b;
int wynik4 = a / b;
Zmienne tak nie działają.

C/C++
cout << a + b = wynik1 << endl;
Tak też nie działają.
P-155672
latajacaryba
» 2016-12-30 01:03:23
C/C++
int spr1;
switch( spr1 )
{
    case +:
To int czy char? Typ int reprezentuje liczby całkowite. Nie możesz wrzucić do niego znaku '+' czy litery. Od tego jest typ
char
Kiedy deklarujesz zmienną w main()
C/C++
int a;
int b;
int wynik1 = a + b;
int wynik2 = a - b;
int wynik3 = a * b;
int wynik4 = a / b;
To zmienna ta jest wypełniona "śmieciami", czyli pozostałościami w pamięci. Sprawdź sobie taki program, i zobacz co wyjdzie:
C/C++
#include <iostream>
using namespace std;

main()
{
    int a;
    cout << "to kryje sie pod nazwa 'smieci' w zmiennej 'a' : " << a;
    return 0;
}
Jeśli nie chcesz mieć tych śmieci w zmiennej przy jej tworzeniu, to są 2 opcje:
1. nadajesz jej wartość od razu
int a = 5;
teraz zmienna 'a' ma wartosc 5. Możesz to sprawdzić!
cout << "ok, zmienna a teraz: " << a;
2. Zmienną piszesz przed main(), czyli:
C/C++
#include <iostream>
using namespace std;
int a;
int main()
{
    cout << "zmienna 'a' nad main'em : " << a;
    return 0;
}
Jeśli taką zmienną zadeklarujesz nad main'em, to jej wartość ZAWSZE wyniesie 0.
A teraz co do programu ;)
Masz więc zmienne a i b w których są śmieci. Co dalej? Dalej masz
C/C++
int wynik1 = a + b;
int wynik2 = a - b;
int wynik3 = a * b;
int wynik4 = a / b;

Co to oznacza? To oznacza, że bierzesz te śmieci i dodajesz je w wynik1, odejmujesz w wynik2, i tak dalej...
Bez sensu, prawda?
Jak temu zaradzić? Cóż, sam na to wpadłeś
C/C++
cout << "Podaj liczbe a:" << endl;
cin >> a;
cout << "Podaj liczbę b:" << endl;
cin >> b;

Ale musisz to dać przed deklaracją (stworzeniem) zmiennych wynik1, wynik2, wynik3 i wynik4. Dlaczego?
Ponieważ mówisz kompilatorowi: Kompilatorze! Chce zmienną, nazwaną "wartosc1" której wartością będzie zmiennej A + zmiennej B. Ale chodzi mi o ich wartość W TYM MOMENCIE.
Czyli jeśli za chwilę zmienna A ulegnie zmianie, to wcale nie znaczy, że wynik1 sie zmieni. Nie nie... wynik nie zapomina.
Dlatego, podam Ci parę wskazówek jak to wszystko naprawić.
- wiesz już, że żeby te operacje matematyczne miały sens, wartość zmiennych też musi mieć sens. Najpierw poproś użytkownika o dane, dopiero potem operacje.
- chcesz, by użytkownik podał za pomocą znaków '/', '*', '+', '-' co chce zrobić? Nie od tego jest int. Od tego jest char. Char przechowuje zawsze TYLKO JEDEN ZNAK. przykład:
C/C++
char a;
cout << "uzytkowniku, wpisz jakis znak: ";
cin >> a;
cout << "wpisany znak to: " << a;
 tak więc, już chyba wiesz jak zmienić switch.
- case powinien wyglądać tak:
C/C++
case '+':
// tutaj Twoj kod
break;
Co wpisac w miejscu 'tutaj twoj kod'? Masz case'a na dodawanie. Powinieneś więc takową operację przeprowadzić
Wybacz, że tak długie, mam nadzieję, że nie odstraszyło Cię to :p
Kiedy skończysz, wstaw kod.
P-155678
DawSkii
Temat założony przez niniejszego użytkownika
» 2017-01-18 15:58:13
Dzięki za te wszystkie podpowiedzi i przepraszam że nie odpisywałem gdyż o tym temacie zapomniałem :P. Męczyłem się z tym kilka dni ale w końcu sam z małą pomocą mojego nauczyciela ze szkoły do tego doszliśmy: proszę o to kod po poprawkach.
C/C++
#include <iostream>
using namespace std;
int main()
{
   
    int a;
    int b;
   
   
    cout << "Podaj liczbe a:" << endl;
    cin >> a;
   
    cout << "Podaj liczbe b:" << endl;
    cin >> b;
   
    cout << "Wpisz rodzaj dzialania : 1 = dodawanie 2 = odejmowanie 3 = mno¿enie 4 = dzielenie" << endl;
   
    int znak;
    cin >> znak;
   
    switch( znak )
    {
    case 1:
       
        cout << "Znak prawidlowy!" << endl;
        cout << "a=" << a << endl;
        cout << "b=" << b << endl;
        cout << a << "+" << b << "=" << a + b << endl;
        break;
       
    case 2:
       
        cout << "Znak prawidlowy!" << endl;
        cout << "a=" << a << endl;
        cout << "b=" << b << endl;
        cout << a << "-" << b << "=" << a - b << endl;
        break;
       
    case 3:
       
        cout << "Znak prawidlowy!" << endl;
        cout << "a=" << a << endl;
        cout << "b=" << b << endl;
        cout << a << "*" << b << "=" << a * b << endl;
        break;
       
    case 4:
        cout << "Znak prawidlowy!" << endl;
        cout << "a=" << a << endl;
        cout << "b=" << b << endl;
        cout << a << "/" << b << "=" << a / b << endl;
        break;
       
    default:
        cout << "Wystapil BLAD!!! Wprowadz poprawny znak!" << endl;
       
    }
   
    return 0;
}
Mam nadzieję że na mnie źli nie będziecie za nieaktywność :D. temat do zamknięcia.
P-156588
« 1 »
  Strona 1 z 1