C-Programmierung: Aufgaben: Skalarprodukt zweier Vektoren

Aus Wikibooks
Wechseln zu: Navigation, Suche

Aufgabenstellung[Bearbeiten]

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

Musterlösung[Bearbeiten]

Online-Compiler ideone

#include <stdio.h>

int main (void)
{
    enum { DIMENSION=100 };  /* Konstante für max. Dimension beider Vektoren */
    int v1[DIMENSION],v2[DIMENSION];  /* Arrays für Vektor 1 und 2 */
    int anzahl;      /* Dimension der Vektoren */
    int index;       /* Zählwert der Arrays    */
    int produkt;     /* Produkt jedes Schleifendurchlaufs */
    int ergebnis;    /* 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)  
        {
            printf("\n Eingabe uebersteigt max. Dimensionszahl\n\n");
        }
    }
    while (anzahl>DIMENSION || anzahl<1); /* bei fehlerhafter Eingabe erneuter Schleifendurchlauf */

    for(index=0; index<anzahl; index++)  /* Einleseschleife des ersten Vektors */
    {
        printf("Wert %i fuer vektor 1 eingeben: ",index+1);	
        scanf("%i",&v1[index]);
    }

    for(index=0; index<anzahl; index++)  /* Einleseschleife des zweiten Vektors */
    {
        printf("Wert %i fuer Vektor 2 eingeben: ",index+1);
        scanf("%i",&v2[index]);
    }

    /* Schleife zur Berechnung des Skalarproduktes */
    ergebnis = 0;
    for(index=0; index<anzahl; index++)
    {
        produkt=v1[index]*v2[index];  /* Einzelwerte addieren */
        ergebnis+=produkt;            /* Produkte zum Gesamtwert aufsummieren */
    }

    /* Ausgabe des Gesamtwertes des Skalarproduktes */
    printf("Das Skalarprodukt der Vektoren betraegt: %i\n",ergebnis);
	
    return 0;
}