#1 2011-11-17 16:30:24

michal8m

Administrator

Zarejestrowany: 2011-02-03
Posty: 45
Punktów :   

Listy <-> Zad 5

Załózmy, ze pole „dane” jest typu znakowego i moze przechowywac znaki: ’+’, ’-’ (dwuargumentowy),
’*’, ’/’, ’a’ - ’z’. Wówczas lista moze reprezentowac wyrazenie arytmetyczne w zapisie
przedrostkowym (w notacji polskiej).
Napisz funkcje, która wypisze w notacji tradycyjnej (w zapisie wrostkowym) wyrazenie arytmetyczne
zapisane w liscie w notacji polskiej.
string print(elem *lista)
Napisz funkcje sprawdzajaca, czy lista reprezentuje poprawnie skonstruowane wyrazenie w takiej
beznawiasowej notacji.
bool accepts(elem *lista).






struct elemM {
    char dane;
    elemM *nast;
    elemM *poprz;
};

string printM(elemM* lista) {
    if (!lista) return "Bład...";
    string w = "";
    char znak;
    bool c = true;
    int liczruch = 0;
    while (lista != NULL) {
        znak = lista->dane;
        if (znak != '$') {
            if (((znak < 132 && znak > 96) || isdigit(znak)) && c) {
                w = w + znak;
                c = false;
            } else {
                elemM* tym = lista;
                while ((tym->dane < 132 && tym->dane > 96) || isdigit(tym->dane)) {
                    tym = tym->nast;
                }
                if (tym->dane != '$') {
                    w = w + tym->dane;
                    tym->dane = '$';
                }
                c = true;
            }
        }
        if (c) lista = lista->nast;
    }
    return w;
}

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
Bosa Casa da Igreja spa ciechocinek cennik