C-Programmierung: Aufgaben: Skalarprodukt zweier Vektoren
Aus Wikibooks
[Bearbeiten] Aufgabenstellung
Entwickeln Sie ein Programm, das das Skalarprodukt zweier Vektoren bestimmt. Die Anzahl der Elemente und die Werte der Vektoren sind in der Eingabeschleife manuell einzugeben.
Überprüfen Sie, ob die Anzahl der Elemente die Maximalgröße der Vektoren überschreitet und ermöglichen Sie ggf. eine Korrektur. Legen Sie die maximale Anzahl der Vektorelemente mit einer define-Anweisung durch den Präprozessor fest.
Skalarprodukt: A*B = a1*b1 + a2*b2 + a3*b3 + ... + an*bn
[Bearbeiten] Musterlösung
#include <stdio.h> #define DIMENSION 100 int main (void) { int v1[DIMENSION],v2[DIMENSION]; // Arrays für Vektor 1 und 2 int anzahl; // Anzahl der Vektoren int index; //Zählwert der Arrays; int produkt; //Produkt jedes Schleifendurchlaufs; int ergebnis=0; //Gesamtwert auf den Einzelprodukte aufaddiert werden // Programmüberschrift printf("Skalarprodukt 2er beliebiger Vektoren berechnen\n\n"); do { printf("Bitte Anzahl der Dimensionen angeben (1-%i):" ,DIMENSION); scanf("%i",&anzahl); //Einlesen des Wertes der Vektordimension if (anzahl>DIMENSION || anzahl<1) //wenn Wert > DIMENSION erneute Eingabe { printf("\n Eingabe uebersteigt max. Dimensionszahl\n\n"); } }while (anzahl>DIMENSION || anzahl<1); for(index=0; index<anzahl; index++) //Einleseschleife des ersten Vektors { printf("Wert %i fuer vektor 1 eingeben: ",index+1); scanf("%i",&v1[index]); //Einlesen des Vektorwertes } for(index=0; index<anzahl; index++) // Einleseschleife des zweiten Vektors { printf("Wert %i fuer Vektor 2 eingeben: ",index+1); scanf("%i",&v2[index]); //Einlesen eines Vektorwertes } //Schleife zur Berechnung des Skalarproduktes for(index=0; index<anzahl; index++) { produkt=v1[index]*v2[index]; //Einzelwerte addieren ergebnis+=produkt; //Produkte zum Gesamtwert aufsummieren } /*Berechnung kann auch in die letzte Eingabeschleife integiert werden*/ // Ausgabe des Gesamtwertes des Skalarproduktes printf("Das Skalarprodukt der Vektoren betraegt: %i\n",ergebnis); return 0; }