Vektoren



  • Aufgabe Betrachten Sie das folgende Programm:
    typedef double Vektor8d[8];
    int main() {
    Vektor8d v = {22.4, 3.88, 4.7, 8.0, -10.5, 32.2, 6.3, 10.97};
    Vektor8d w = {7.4, 9.8, 99.8, -3.4, -3.4, 11.3, 7.2, 12.27};
    cout << "Sum: " << Sum(v) << endl; cout << "Prod: " << Prod(v, w) << endl; cout << "Max: " << Max(v) << endl; }
    a) Sum: Berechnet die SummeP7 i=0 vi eines 8d-Vektors.
    b) Prod: Berechnet das SkalarproduktP7 i=0 vi ·wi von zwei 8d-Vektoren.
    c) Max:Gibt das maximale Element eines 8d-Vektors zurück,d.h. das Element vi mit vi ≥ vj f¨ur alle j =0,...,7.

    Meine Lösung:
    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #include <vector>
    using namespace std;

    double Sum (double v0, double v1,double v2, double v3, double v4, double v5, double v6,double v7) {return v0+v1+v2+v3+v4+v5+v6+v7;}
    int Sum (int v0, int v1, int v2, int v3, int v4, int v5, int v6, int v7) {return v0+v1+v2+v3+v4+v5+v6+v7;}
    int v0=22.4;
    double Prod (double v0, double w0) {return v0w0;}
    int Prod (int v0, int w0) {return v0
    w0;}
    int w0=7.4;

    typedef double Vektor8d[8];
    int main(){
    Vektor8d v={22.4, 3.88, 4.7, 8.0, -10.5, 32.2, 6.3, 10.97};
    Vektor8d w={7.4, 9.8, 99.8, -3.4, -3.4, 11.3, 7.2, 12.27};

    cout<< "Sum : " <<Sum(v) <<endl;
    cout << Sum (22.4, 3.88, 4.7, 8.0, -10.5, 32.2, 6.3, 10.97) << endl;
    cout<< "Prod: " <<Prod(v0w0) <<endl;
    cout<< Prod(22.4
    7.4) <<endl;
    << "Max: " << Max(v) << endl;

    return 0;

    }

    Wie kann ich das MAximum und das Produkt berechnen?



  • Bevor du das Produkt berechnest, solltest du deine "Lösung" vielleicht mal einem Compiler übergeben.



  • Bitte... verwendet doch einfach std::vector.
    Sowas kann man doch nicht ernst nehmen:

    double Sum (double v0, double v1,double v2, double v3, double v4, double v5, double v6,double v7) {return v0+v1+v2+v3+v4+v5+v6+v7;}
    

    Ich mein `Vec2` oder `Vec3` in der Grafikprogrammierung oder so kann ich verstehen, aber wozu braucht man bitte einen Vec8... Naja, vielleicht fehlen mir da einfach nur die Kenntnisse, und es gibt einige Probleme, wo ein std::array<foo, 8> oder std::vector<foo> nicht ausreichen

    Zum eigentlichen Thema:
    Summen: std::accumulate
    Skalarprodukt: std::inner_product
    Max: std::max_element

    Und sonst:
    Skalarprodukt ist Summe der Produkte aus den jeweiligen koordinatenpaaren/Stellen/... deiner Vektoren - oder so ähnlich. Also

    vec1 = {a, b, c};
    vec2 = {d, e, f};
    result = a*d + b*e + c*f;  // Ergebnis ist eine Zahl
    

    Max geht auch mit ner einfachen Schleife.

    double max = 0;  // eventuell mit numeric_limits<double>::min() initialisieren
    for bla in vec
        if bla > max
            max = bla
    

    Ich frag mich, welcher Fluch zur Zeit auf den Code Tags liegt. Einfach Code "reinpasten", markieren und den [C++] Button drücken, fertig



  • HarteWare schrieb:

    Ich frag mich, welcher Fluch zur Zeit auf den Code Tags liegt. Einfach Code "reinpasten", markieren und den [C++] Button drücken, fertig

    Hehe, ich hab mir in letzter Zeit angewöhnt posts ohne code tags einfach zu ignorieren.

    Was will man jemand helfen, der nicht mal das simple Konzept der code tags kapiert bzw. nicht fähig ist die Optionen zu lesen? Zeitverschwendung.


Anmelden zum Antworten