templates zur Datenverarbeitung



  • OK. Hab ich die Gunst der Stunde (2:30h) mal genutzt um ganz was nettes zu basteln:

    #include <iostream>
    
    using namespace std;
    
    template<class T> struct replaceRs {
        T t;
        int call() {
            char x = t.call();
            if (x == 'R')
                return 's';
            return x;
        }
    };
    
    template<class T> struct replaceQw {
        T t;
        int call() {
            char x = t.call();
            if (x == 'Q')
                return 'w';
            return x;
        }
    };
    
    template<class T> struct swapper {
        T t;
        bool x;
        int next;
        swapper() : x(false) {}
        char call() {
            if (x) {
                x = false;
                return next;
            } else {
                next = t.call();
                if (next == -1)
                    return -1;
                x = true;
                int c = t.call();
                if (c == -1) {
                    c = next;
                    x = false;
                    return c;
                } else
                    return c;
            }
        }
    };
    
    struct getCin {
        int call() {
            return cin.get();
        }
    };
    
    int main() {
        replaceRs<swapper<replaceQw<getCin> > > x;
        int i;
        while ((i = x.call()) != -1) {
            cout.put(i);
        }
    }
    

    Das tolle: der Code funktioniert sogar. Er macht folgendes: Er tauscht R gegen s und Q gegen w und tauscht des weiteren immer zwei benachbarte Buchstaben. Ausprobieren! Sicher, es gibt bestimmt schon jemand, der das auch schon gebastelt hat, aber die Bücher in meinem Schrank sind alle ziemlich alt und daher ungeeignet um sowas nachzuschlagen.



  • was soll das und warum zeigst du uns sowas?



  • Original erstellt von <?>:
    was soll das und warum zeigst du uns sowas?

    weil 2 uhr 30 war und ich wollte.


Anmelden zum Antworten