Bibliothek implementieren



  • Ich grüße euch!

    Ich möchte gerne eine Bibliothek implementieren mit Strukturen und Unions. Ich habe die Strukturen unten aufgelistet

    typedef struct struct_cmpl_kart{
    
    			double re;
    			double im;
    
    		} complex_kart;
    
    		typedef struct struct_cmpl_polar{
    
    			double betrag;
    			double phase;
    
    		} complex_polar;
    
    		typedef union uni_val{
    
    			complex_kart kart_value;
    			complex_polar polar_value;
    			double scalar_value;
    
    		} value;
    

    Ich möchte gerne eine Bibliothek implementieren die folgenden Funktionalitäten enthält:
    - Addition, Subtraktion, Multiplikation, Division von "values"
    - Addition, Multiplikation von "value-Vektoren"
    - Addition, Multiplikation, Transposition, Invertierung von "value-Matrizen"

    Kann ich da universelle Funktionen bauen die erkennen was Kartesisch ist oder Polar und Skalar?? 😕
    Hat Ihr da Tipps für mich??



  • Hi,

    vielleicht geht es ja damit:

    typedef enum {cart, polar, scalar} complex_type;
    
       typedef struct {
           complex_type type;
           union {
              complex_kart kart_value;
              complex_polar polar_value;
              double scalar_value;		
           } val;
       } value;
    
       /* Benutze value dann z.B. so: */
       value a;
       switch (a.type) {
       case cart:
           a.val.kart_value.re = 10.;
           break;
       case polar:
           a.val.polar_value.phase = 20.;
           break;
       case scalar:
           a.val.scalar_value = 10.;
           break;
       default: /* error handling */
           break;
       }
    

    Ich hoffe, ich konnte dir hiermit weiterhelfen.

    Mit diesem Ansatz speicherst du dir im Objekt selbst, welchen Typ
    es beinhaltet.

    Gruß mcr

    EDIT: Fehler im Code beseitigt.


Anmelden zum Antworten