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 weggemachtdu 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