Veröffentlicht 17. Februar 201114 j Hallo zusammen, ich habe einen Fehler bei der Skalarmultiplikation von Zwei int-Vektoren. Leider finde ich ihn nicht. Vlt. kann mir einer von euch behilflich sein. #include <stdio.h> int scalar(int (*vec1)[],int (*vec2)[],int laenge) { int i,res=0; for(i=0;i<laenge;i++) { res=+ (*vec1) * (*vec2); } return res; } int main() { int veca[3],vecb[3],lenth=3,skalar; printf("Gib zwei Vektoren ein: \n"); printf("Erster Vektor: "); scanf("%d",veca); printf("\nZweiter Vektor: "); fflush(stdin); scanf("%d",vecb); fflush(stdin); skalar=scalar(veca,vecb,lenth); printf("Das Skalar lautet: %d\n\n",skalar); getchar(); return 0; }
17. Februar 201114 j Die Berechnung des Skalarprodukts sieht gut aus, aber du befüllst deine Vektoren nicht ordentlich. Du liest nur zwei ints vom Benutzer ein, die steckst du in die jeweils erste Komponente deiner Vektoren. Was ist mit dem Rest? Und beim nächsten Mal bitte eine ausführlichere Fehlerbeschreibung als "ich habe einen Fehler" Und noch eins: fflush(stdin) erzeugt undefiniertes Verhalten, außer bei Microsoft-Compilern.
17. Februar 201114 j Erstmal danke für die Antwort. ALso ich habe das jetzt wie folgt geändert: printf("Erster Vektor: "); scanf("%d %d %d",&veca[0],&veca[1],&veca[2]); printf("\nZweiter Vektor: "); scanf("%d %d %d",&vecb[0],&vecb[1],&vecb[2]); . Aber irgendwie klappt das trotzdem nicht?
17. Februar 201114 j Aber irgendwie klappt das trotzdem nicht?Das soll jetzt eine ausführlichere Fehlerbeschreibung sein? res=+ (*vec1) * (*vec2); +=, nicht =+
17. Februar 201114 j Jetzt vlt. ausführlicher . Habe das so eingegeben wie du es gesagt hast. Der findet keine Syntaxfehler aber der startet das Programm trotzdem nicht. Habe ich die Werte eventuell falsch übergeben?
17. Februar 201114 j Der findet keine Syntaxfehler aber der startet das Programm trotzdem nicht.Wer ist "der"? Was passiert, wenn du das Programm ausführst?
17. Februar 201114 j Sorry, muss mich verbessern. Der Compiler startet das Programm schon, aber nachdem ich die beiden vektoren eingegeben habe, öffnet sich ein Fenster wo steht (WS 07/08.exe funktioniert nicht mehr) ("WS 07/08" ist der Name vom Projekt).
17. Februar 201114 j Der Compiler startet das Programm schonDer Compiler übersetzt das Programm, starten musst du es schon selbst (oder deine Entwicklungsumgebung). aber nachdem ich die beiden vektoren eingegeben habe, öffnet sich ein Fenster wo steht (WS 07/08.exe funktioniert nicht mehr) ("WS 07/08" ist der Name vom Projekt).Ein Schrägstrich im Dateinamen? Wie hast du das denn geschafft?
17. Februar 201114 j Habe keinen Schrägstrich im Projektnamen. Das war nur ein Pseudoname den ich eben angegeben hatte. IN echt steht dort WS0708.
17. Februar 201114 j Habe keinen Schrägstrich im Projektnamen. Das war nur ein Pseudoname den ich eben angegeben hatte. IN echt steht dort WS0708.Hast du uns vielleicht auch nur Pseudocode gezeigt? Dein Code läuft nämlich bei mir prima.
17. Februar 201114 j ne, kein pseudocode. Ich habe alles eins zu eins vom Quellcode kopiert. Schon komisch, dass es bei dir klappt aber nicht bei mir.
17. Februar 201114 j Schade, dass keiner weiss wo der Fehler liegt. Aber trotzdem danke. Das obige Programm enthält mehrere Fehler und dürfte nicht mal durch den Compiler gekommen sein.
17. Februar 201114 j Wäre nett, wenn du die Fehler nennen könntest. Denn ich sehe keine. Und wie gesagt, die Vektoren kann ich eingeben. Nur danach bei der Berechnung des Skalars überlastet das Programm.
17. Februar 201114 j Wäre nett, wenn du die Fehler nennen könntest. Denn ich sehe keine. Und wie gesagt, die Vektoren kann ich eingeben. Welcher Compiler lässt das durchgehen? Um mal anzufangen: "veca" ist ein int-Array, was einem Zeiger auf int-Werte entspricht. Die Funktion "scalar" erwartet, so wie sie oben steht, jedoch einen Zeiger auf ein Array von int-Zeigern. Nur danach bei der Berechnung des Skalars überlastet das Programm. Überlastet? Es ist vermutlich ein Absturz gemeint.
17. Februar 201114 j Versuche das Programm mal als C++-Programm mit einem C++-Compiler zu compilieren. Als C-Programm compiliert geht es zwar (mit Warnung) durch den C-Compiler, aber falsch ist es trotzdem.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.