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 #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ś? |
|
carlosmay |
» 2016-02-15 00:20:40 Nie ma przeciążonych operatorów strumieni do tego typu zmiennych. Po co w tym stosować enum? |
|
Mancini Temat założony przez niniejszego użytkownika |
» 2016-02-15 00:46:29 Taki typ zadania, to jest tylko część kodu :) . |
|
carlosmay |
» 2016-02-15 00:58:49 Taki typ zadania, to jest tylko część kodu :) |
Jakie zadanie ma spełniać enum? |
|
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 :) |
|
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. 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 ) );
Napisz jeszcze jaki format danych jest w pliku. |
|
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 |
|
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: |
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?). |
|
« 1 » 2 |