Ich versuche, ein Programm mit einer Funktion double_product(vector<double> a, vector<double> b)
zu schreiben, die das Skalarprodukt zweier Vektoren berechnet. Das Skalarprodukt ist
Hier ist was ich habe. Es ist ein Chaos, aber ich versuche es!
%Vor%Wenn Sie dies nicht selbst tun müssen (z. B. wenn Sie es als Hausaufgabe schreiben), sollten Sie den Standardalgorithmus, der bereits geschrieben wurde, genau verwenden, um genau das zu erreichen, was Sie wollen:
%Vor% Beachten Sie, dass, während die begin(a)
, end(a)
in C ++ 11 neu ist, std::inner_product
seit C ++ 98 verfügbar ist.
Sie können die von Ihnen definierte class
löschen. Du brauchst es nicht.
In Ihrer Funktion scalar_product
:
Es ist fast da. Du brauchst keine 2 Schleifen. Nur eine.
%Vor% Um diese Funktion jetzt aufzurufen müssen Sie zwei Vektorobjekte in Ihrem main()
erstellen, sie mit Werten füllen (natürlich die gleiche Anzahl an Werten!) und dann scalar_product( first_vector_that_you_create, second_vector_object );
aufrufen
Während Ihnen viele Lösungen vorgestellt wurden, die funktionieren, lassen Sie mich eine andere Variante auf den Markt bringen, um ein paar Konzepte vorzustellen, die Ihnen helfen sollten, besseren Code zu schreiben:
class
werden nur benötigt, um Daten zusammen zu packen In diesem Sinne:
%Vor% Sie könnten entscheiden, den inner_product
-Algorithmus direkt zu verwenden, aber seien wir ehrlich:
also ist es besser, es zu verpacken.
Hinweis: Ich habe const&
verwendet, um dem Compiler mitzuteilen, dass er die Vektoren nicht kopieren soll.
Hier ist der Code, den Sie haben sollten. Ich sehe, dass du in deinem Code Klasse benutzt hast, die du hier nicht wirklich brauchst. Lassen Sie mich wissen, ob die Frage die Verwendung der Klasse erfordert.
Da du neu bist und dieser Code dich erschrecken könnte. Also werde ich versuchen, dies zu erklären, während ich gehe. Suchen Sie im Code nach Kommentaren, um zu verstehen, was getan wird, und fragen Sie, ob Sie nicht verstehen.
%Vor%Wenn Sie eine IDE verwenden, dann kompilieren und starten Sie sie. Wenn Sie eine Befehlszeile auf einem Unix-basierten System mit g ++ - Compiler verwenden, tun Sie Folgendes (wobei Scalar.cpp die Datei ist, die den Code enthält):
%Vor%Um es auszuführen, geben Sie einfach
ein %Vor% Sie sollten 1.99
als Ausgabe des obigen Programms erhalten.
Sie scheinen eine Klasse speziell für Vektoren erstellen zu wollen. Die Klasse, die ich in meinem Beispiel erstellt habe, ist auf 3-dimensionale Vektoren zugeschnitten, aber Sie können sie bei Bedarf in eine andere ändern. Die Klasse enthält i, j, k, kann aber auch Skalarprodukte basierend auf anderen MathVectors ausführen. Der andere Vektor wird über eine C ++ - Referenz übergeben. Es ist schwer abzuleiten, was die Frage war, aber ich denke, das könnte sie beantworten.
%Vor%Tags und Links c++