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

Enum w strukturze

Ostatnio zmodyfikowano 2016-02-15 15:37
Autor Wiadomość
Mancini
Temat założony przez niniejszego użytkownika
Enum w strukturze
» 2016-02-14 23:20:44
Chciałem zrobić przeciążenie operatora wejścia i wyjścia

C/C++
#include <iostream>

enum Symbol { e, a, b, c, d };

using namespace std;

struct WyrazenieAlgeb {
    Symbol Arg1;
    Symbol Arg2;
    Symbol Wynik;
    char znak;
};
istream & operator >>( istream & in, WyrazenieAlgeb & dzialanie ) {
    in >> dzialanie.Arg1;
    in >> dzialanie.znak;
    in >> dzialanie.Arg2;
    in >> dzialanie.Wynik;
    return in;
}
ostream & operator <<( ostream & out, WyrazenieAlgeb & dzialanie ) { {
        out << dzialanie.Arg1 << " " << dzialanie.znak << " " << dzialanie.Arg2 << " " << dzialanie.Wynik << endl;
        return out;
    }

Już nie mówię o tym, że miliony błędów wyskoczyły to konkretny ten dotyczący linii w ktorej jest przeciazenie wejscia brzmi:
no match for 'operator>>' (operand types are 'std::istream {aka std::basic_istream<char>}' and 'Symbol'.

Ktoś, coś?
P-144872
carlosmay
» 2016-02-15 00:20:40
Ktoś, coś?
Nie ma przeciążonych operatorów strumieni do tego typu zmiennych.

Po co w tym stosować enum?
P-144876
Mancini
Temat założony przez niniejszego użytkownika
» 2016-02-15 00:46:29
Taki typ zadania, to jest tylko część kodu :) .
P-144879
carlosmay
» 2016-02-15 00:58:49
Taki typ zadania, to jest tylko część kodu :)
Jakie zadanie ma spełniać enum?
P-144880
Mancini
Temat założony przez niniejszego użytkownika
» 2016-02-15 01:33:01
Zadanie polega na tym, że mając tablicę enumów wczytujemy wyrażenia z pliku tworząc wyrażenie. Sprawdzamy jego poprawność (składnia i wynik) i robimy statystykę wyrażeń.
W takim razie wyrazenie musi zawierac (tutaj już mam drobny błąd) 2 chary (znak pomiedzy enumami i znak równości), dwa argumenty i wynik. Tylko jak to wczytywać? To tak w ogromnym uproszczeniu :)
P-144881
carlosmay
» 2016-02-15 08:55:38
Zadanie polega na tym, że mając tablicę enumów wczytujemy wyrażenia z pliku tworząc wyrażenie.
Czyli z pliku pobierasz słowo 'plus' i na podstawie wyrażenia enum należy wypisać do strumienia to co się pod nim kryje '+'.

enum jest tablicą stałych i nie można modyfikować jej wartości.

C/C++
enum Symbol { plus = '+', minus = '-', mnozenie = '*', dzielenie = '/', rowna = '=' };

// ...
std::cout << arg1 << " " << static_cast < char >( Symbol::plus ) << " " << arg2 << " " <<
static_cast < char >( Symbol::rowna ) << " " << wynik( arg1, arg2, static_cast < char >( Symbol::plus ) ); // wynik() funkcja wykonujaca dzialanie napodstawie symbolu dzialania

Napisz jeszcze jaki format danych jest w pliku.
P-144882
Mancini
Temat założony przez niniejszego użytkownika
» 2016-02-15 09:14:34
Nikt nie będzie zmieniać wartości enumów. Znalazłem to zadanie w internecie. Może to lepiej wyjaśni:
http://rab.ict.pwr.wroc.pl/~kreczmer/po/zadania/zad-sprawdzian-testu2/zad-sprawdzian-testu2.pdf
P-144883
carlosmay
» 2016-02-15 10:40:55
Nikt nie będzie zmieniać wartości enumów. Znalazłem to zadanie w internecie. Może to lepiej wyjaśni:
in >> dzialanie.Arg1;
 to jest oczywiście niepoprawne (po typie zmiennej Arg1 wnoszę próbę wczytania wartości do
typu Symbol reprezentującego wartości enum).

W treści zadania nie ma nic o zastosowaniu enum, chyba że przeoczyłem.
Z resztą (a + c = b) nie wymaga takich zabiegów ( błędy w opisie -> a + c = d, a + c = b, które jest poprawne?).
P-144887
« 1 » 2
  Strona 1 z 2 Następna strona