Typedef



  • //rechner.cpp
    //Taschenrechner
    #include <iostream.h>
    
    int current;
    double stored = 0, result = 0;
    
    double add    ( double newop );
    double sub    ( double newop );
    double minus  ( double newop );
    double divide ( double newop );
    double multi  ( double newop );
    double store  ( double newop ) 
     { 
       stored = result; 
       result = current; 
       cout << "Bitte geben Sie einen neuen Wert ein!" << endl; 
       cin >> newop; 
       return newop; 
    }
    double restore( double newop );
    double unknown( double newop );
    
    int main(int argc, char *argv[]) {
       char operation = ' ';
       double (*funct)(double);
       double newop = 0;
    
       cout << "Bitte geben Sie einen Wert ein!" << endl;
       cin >> current;
       result = current;
         do { 
          bool readSecondOperand = true; 
          cout << ">>> " << result << endl; 
          cout << "Bitte Operation angeben." << endl; 
          cin >> operation; 
          switch( operation ) { 
             case '+': funct = add;     break; 
             case '*': funct = multi;   break; 
             case '-': funct = minus;   break; 
             case '/': funct = divide;  break; 
             case 'M': {funct = store;readSecondOperand=false;}   break; 
             case 'R': {funct = restore;readSecondOperand=false;} break; 
             default:  funct = unknown; break; 
          } 
          if (readSecondOperand) 
               cin >> newop; 
          result = funct( newop ); 
       } while( operation != 'Q' ); 
    
       return 0;
    
    }
    
    double divide( double newop ) {
       return result / newop;
    
    }
    
    double multi( double newop ) {
       return result * newop;
    
    }
    
    double minus( double newop ) {
       return result - newop;
    
    }
    
    double add( double newop ) {
       return result + newop;
    
    }
    
    double restore( double newop ) {
       return stored;
    }
    
    double unknown( double newop ) {
       cerr << "Unknown Operation!" << endl;
       return result;
    }
    

    Als

    typedef struct v3D {
    double werte[3];
    } vector3D;

    darstellen kann??

    Dabei soll gelten :

    Statt mit double-Zahlen soll der Taschenrechner nun mit Vektoren rechnen, wobei alle Rechenoperationen
    elementweise ausgeführt werden sollen. Das Hauptprogramm soll dabei möglichst
    wenig verändert werden. Erstellen Sie eine Liste der Elemente (Operationen, Funktionen...) in
    Ihrem Programm, die in nicht direkt auf Vektoren angewandt werden können und begründen
    Sie jeweils in einem kurzen Satz, warum dies so ist.

    Firstrun



  • Warum überlädst Du die funktionen nicht einfach?



  • neee wir sollen das ohne Überladung machen ... das sollen wir bei einer anderen Aufgabe machen .. ich hasse das Wort .. grrr

    Also es soll schon vom Typ

    Taschenrechner/Einfache und zusammengesetzte Datentypen

    sein

    Grüsse

    Firstrun



  • Was genau ist dein Problem? Einfach kommentarlos die Aufgabenstellung hier hinzuklatschen ist IMO etwas billig.



  • Firstrun schrieb:

    double (*funct)(double);
    

    Den Sinn dieser Codezeile hätte ich gerne erklärt 🤡

    Devil



  • Funktionspointer 🤡



  • ja schon, aber reicht da nicht ein double *func; ?

    devil



  • Das wär ein Pointer auf double.

    🤡
    .



  • devil81 schrieb:

    ja schon, aber reicht da nicht ein double *func; ?

    Das reicht nicht.



  • Öhmmmmm dachte ich könnte nen bissel hilfe bekommen ...

    naja hab den Code noch bissel geändert .... das Q muss auch nen case haben und dann per cout was ausgeben und terminieren ...

    Nur jetzt zurück zur Frage .. wie bekomme ich das den hin als helf .. und bei der Multiplikation als Skalar und bei der Division


Anmelden zum Antworten