dotprod Funktion mit ARRAYS



  • ich hab ein Problem ...
    ich muss eine Funktion dotprod() schreiben, die zwei float Arrays a,b fester Länge NMAX besitzen
    und das Ergebnis das Skalarprodukt s = Σ NMAX-1, i=0, a[i]b[i] zurückgibt. NMAX soll als Makro definiert werden.

    bisher hab ich folgendes geschrieben:

    # define NMAX 10

    float dotprod(float x)
    {

    float a[NMAX],b[NMAX];
    int i, s=0, ende;
    float y;
    ende = NMAX-1;

    for (i=0; i<ende; i++)
    {
    s = (a[i] * b[i]);
    y = s*1;
    }

    return (y);
    }

    aber da ist was falsch

    könnt ihr mir bitte helfen



  • Erstmal ein Hallo

    Zum anderen am schönsten wäre es wenn du die code-Tags benutzt damit man den Quellcode leichter lesen kann.

    Und nun zu deiner Funktion:
    - was soll der Übergabeparameter X bedeuten?
    - Deine 2 Arrays die du Multiplizieren willst, haben keine Werte, da du sie innerhalb der Funktion einfach nur erzeugst ohne ihnen Werte zu geben, außerdem sollten diese sowieso als Parameter an die Funktion gehängt werden nach deiner Beschreibung!
    - ebenso ist deine Bedingung innerhalb der Schleife falsch. Ein "i<ende" mit "ende=NMAX-1" wird nur bis maximal NMAX-2 laufen, also in deinem Fall bis 8 so fehlt dir Wert mit dem Index 9. Entweder "i<=ende" oder "i < NMAX"
    - Und das Multiplizieren und addieren kannst du auch in einer Zeile machen:

    y += (a[i] * b[i]);
    

    MfG Marco Galster

    PS: Hast du schon mal über ein Anfängerbuch nachgedacht? Bzw. Tutorials?



  • danke für deine antwort
    die for schleife hab ich jetzt verbessert, Übergabeparameter x hab ich auch weggemacht

    du meinst ja die 2 Arrays die ich multiplizieren möchte, haben keine Werte, muss ich davor a=NMAX, b=NMAX schreiben?

    das ding ist ich hab diese woche mein Testat vor der vorlesung, deswegen versteh ich das alles nicht ganz.

    PS: ich bin dabei ein Buch zu lesen aber da steht auch nicht viel über Arrays usw


Anmelden zum Antworten