Einführung
In diesem Labor lernen Sie, wie Sie das Skalar- und Vektorprodukt von 3D-Vektoren in der C-Programmierung berechnen. Das Labor umfasst die folgenden Schritte:
- Lesen der Vektor-Komponenten: Entwickeln Sie ein Programm, das es den Benutzern ermöglicht, die Komponenten zweier 3D-Vektoren einzugeben.
- Berechnen des Skalar- oder Vektorprodukts: Implementieren Sie Funktionen zur Berechnung des Skalar- und Vektorprodukts der eingegebenen Vektoren.
- Ausgabe des Ergebnisses: Zeigen Sie das berechnete Skalar- oder Vektorprodukt dem Benutzer an.
Am Ende dieses Labors haben Sie ein solides Verständnis der Vektoroperationen und ihrer Implementierung in C.
Vektor-Komponenten einlesen
In diesem Schritt lernen Sie, wie Sie Vektor-Komponenten in C für die Berechnung von Skalar- und Vektorprodukten einlesen. Wir erstellen ein Programm, das es Benutzern erlaubt, Vektor-Komponenten einzugeben und diese für weitere mathematische Operationen zu speichern.
Erstellen Sie zunächst eine neue C-Datei für unsere Vektoroperationen:
cd ~/project
nano vector_operations.c
Fügen Sie nun den folgenden Code hinzu, um eine Funktion zur Eingabe von Vektor-Komponenten zu definieren:
#include <stdio.h>
#define VECTOR_SIZE 3
// Funktion zum Einlesen von Vektor-Komponenten
void readVector(float vector[], int size) {
printf("Geben Sie %d Vektor-Komponenten ein (durch Leerzeichen getrennt): ", size);
for (int i = 0; i < size; i++) {
scanf("%f", &vector[i]);
}
}
int main() {
float vector1[VECTOR_SIZE];
float vector2[VECTOR_SIZE];
printf("Vektor 1:\n");
readVector(vector1, VECTOR_SIZE);
printf("Vektor 2:\n");
readVector(vector2, VECTOR_SIZE);
return 0;
}
Kompilieren und führen Sie das Programm aus, um die Vektoreingabe zu testen:
gcc vector_operations.c -o vector_operations
./vector_operations
Beispielausgabe:
Vektor 1:
Geben Sie 3 Vektor-Komponenten ein (durch Leerzeichen getrennt): 1 2 3
Vektor 2:
Geben Sie 3 Vektor-Komponenten ein (durch Leerzeichen getrennt): 4 5 6
Erklärung
In diesem Code:
- Definieren wir eine Konstante
VECTOR_SIZEmit dem Wert 3 für 3D-Vektoren. - Die Funktion
readVector()nimmt ein Array und dessen Größe als Parameter entgegen. scanf()wird verwendet, um die Gleitkomma-Vektor-Komponenten einzulesen.- Die Funktion
main()demonstriert das Einlesen von zwei Vektoren.
Skalar- und Vektorprodukt berechnen
In diesem Schritt lernen Sie, wie Sie Skalar- und Vektorprodukte für 3D-Vektoren in der C-Programmierung berechnen. Wir erweitern das vorherige Programm um mathematische Operationen an Vektoren.
Aktualisieren Sie die Datei vector_operations.c mit folgendem Code:
cd ~/project
nano vector_operations.c
Fügen Sie die Implementierung für die Berechnung von Skalar- und Vektorprodukten hinzu:
#include <stdio.h>
#define VECTOR_SIZE 3
void readVector(float vector[], int size) {
printf("Geben Sie %d Vektor-Komponenten ein (durch Leerzeichen getrennt): ", size);
for (int i = 0; i < size; i++) {
scanf("%f", &vector[i]);
}
}
// Skalarprodukt berechnen
float computeDotProduct(float vector1[], float vector2[], int size) {
float dotProduct = 0.0;
for (int i = 0; i < size; i++) {
dotProduct += vector1[i] * vector2[i];
}
return dotProduct;
}
// Vektorprodukt berechnen
void computeCrossProduct(float vector1[], float vector2[], float result[]) {
result[0] = vector1[1] * vector2[2] - vector1[2] * vector2[1];
result[1] = vector1[2] * vector2[0] - vector1[0] * vector2[2];
result[2] = vector1[0] * vector2[1] - vector1[1] * vector2[0];
}
int main() {
float vector1[VECTOR_SIZE];
float vector2[VECTOR_SIZE];
float crossProductResult[VECTOR_SIZE];
printf("Vektor 1:\n");
readVector(vector1, VECTOR_SIZE);
printf("Vektor 2:\n");
readVector(vector2, VECTOR_SIZE);
// Skalarprodukt berechnen und anzeigen
float dotProduct = computeDotProduct(vector1, vector2, VECTOR_SIZE);
printf("Skalarprodukt: %.2f\n", dotProduct);
// Vektorprodukt berechnen und anzeigen
computeCrossProduct(vector1, vector2, crossProductResult);
printf("Vektorprodukt: [%.2f, %.2f, %.2f]\n",
crossProductResult[0],
crossProductResult[1],
crossProductResult[2]);
return 0;
}
Kompilieren und ausführen des aktualisierten Programms:
gcc vector_operations.c -o vector_operations
./vector_operations
Beispielausgabe:
Vektor 1:
Geben Sie 3 Vektor-Komponenten ein (durch Leerzeichen getrennt): 1 2 3
Vektor 2:
Geben Sie 3 Vektor-Komponenten ein (durch Leerzeichen getrennt): 4 5 6
Skalarprodukt: 32.00
Vektorprodukt: [-3.00, 6.00, -3.00]
Erklärung
computeDotProduct()berechnet das Skalarprodukt durch Multiplikation entsprechender Vektor-Komponenten.computeCrossProduct()berechnet das Vektorprodukt nach der Standardformel für das 3D-Vektorprodukt.- Die Funktion
main()demonstriert die Berechnung und Anzeige sowohl des Skalar- als auch des Vektorprodukts.
Ausgabe des Ergebnisses
In diesem letzten Schritt verbessern Sie das Vektor-Operationsprogramm, indem Sie formatierte Ausgaben hinzufügen und eine Funktion erstellen, um Vektorergebnisse in einem klaren und lesbaren Format darzustellen.
Aktualisieren Sie die Datei vector_operations.c mit der folgenden verbesserten Implementierung:
cd ~/project
nano vector_operations.c
Fügen Sie die neue Druckfunktion hinzu und modifizieren Sie das Hauptprogramm:
#include <stdio.h>
#define VECTOR_SIZE 3
void readVector(float vector[], int size) {
printf("Geben Sie %d Vektor-Komponenten ein (durch Leerzeichen getrennt): ", size);
for (int i = 0; i < size; i++) {
scanf("%f", &vector[i]);
}
}
float computeDotProduct(float vector1[], float vector2[], int size) {
float dotProduct = 0.0;
for (int i = 0; i < size; i++) {
dotProduct += vector1[i] * vector2[i];
}
return dotProduct;
}
void computeCrossProduct(float vector1[], float vector2[], float result[]) {
result[0] = vector1[1] * vector2[2] - vector1[2] * vector2[1];
result[1] = vector1[2] * vector2[0] - vector1[0] * vector2[2];
result[2] = vector1[0] * vector2[1] - vector1[1] * vector2[0];
}
// Neue Funktion zum Ausgeben des Vektors mit Formatierung
void printVector(const char* label, float vector[], int size) {
printf("%s: [", label);
for (int i = 0; i < size; i++) {
printf("%.2f%s", vector[i], (i < size - 1) ? ", " : "");
}
printf("]\n");
}
int main() {
float vector1[VECTOR_SIZE];
float vector2[VECTOR_SIZE];
float crossProductResult[VECTOR_SIZE];
// Vektoreingabe
printf("Vektoreingabe:\n");
printVector("Vektor 1", vector1, VECTOR_SIZE);
readVector(vector1, VECTOR_SIZE);
printVector("Vektor 2", vector2, VECTOR_SIZE);
readVector(vector2, VECTOR_SIZE);
// Ergebnisse berechnen
float dotProduct = computeDotProduct(vector1, vector2, VECTOR_SIZE);
computeCrossProduct(vector1, vector2, crossProductResult);
// Formatierte Ergebnisse ausgeben
printf("\nErgebnisse der Vektoroperationen:\n");
printVector("Vektor 1", vector1, VECTOR_SIZE);
printVector("Vektor 2", vector2, VECTOR_SIZE);
printf("Skalarprodukt: %.2f\n", dotProduct);
printVector("Vektorprodukt", crossProductResult, VECTOR_SIZE);
return 0;
}
Kompilieren und ausführen des aktualisierten Programms:
gcc vector_operations.c -o vector_operations
./vector_operations
Beispielausgabe:
Vektoreingabe:
Vektor 1: [0.00, 0.00, 0.00]
Geben Sie 3 Vektor-Komponenten ein (durch Leerzeichen getrennt): 1 2 3
Vektor 2: [0.00, 0.00, 0.00]
Geben Sie 3 Vektor-Komponenten ein (durch Leerzeichen getrennt): 4 5 6
Ergebnisse der Vektoroperationen:
Vektor 1: [1.00, 2.00, 3.00]
Vektor 2: [4.00, 5.00, 6.00]
Skalarprodukt: 32.00
Vektorprodukt: [-3.00, 6.00, -3.00]
Erklärung
- Die Funktion
printVector()wurde hinzugefügt, um eine konsistente und formatierte Ausgabe für Vektoren zu erzeugen. - Die Funktion
main()wurde erweitert, um die Eingabe und Ausgabe der Vektoren und Ergebnisse zu demonstrieren. - Die Lesbarkeit von Vektoren und Berechnungsergebnissen wurde verbessert.
- Ein sauberes und professionelles Ausgabeformat für Vektoroperationen wird bereitgestellt.
Zusammenfassung
In diesem Labor haben Sie gelernt, wie man Vektor-Komponenten in C-Programmierung liest und Skalar- und Vektorprodukt-Berechnungen durchführt. Sie haben ein Programm erstellt, das es Benutzern ermöglicht, Vektor-Komponenten einzugeben und anschließend das Skalar- oder Vektorprodukt der Vektoren berechnet. Die wichtigsten Lernpunkte umfassen die Definition einer Funktion zum Lesen von Vektor-Komponenten, die Implementierung der Skalar- und Vektorprodukt-Formeln und die Ausgabe der Ergebnisse.
Das Programm demonstriert, wie man mit 3D-Vektoren in C arbeitet und grundlegende Vektoroperationen anwendet. Durch die schrittweisen Anweisungen haben Sie praktische Erfahrungen mit der Handhabung von Vektor-Datentypen und der Durchführung gängiger Vektorrechnungen gesammelt.



