Adrenalin88 Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 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; }
Klotzkopp Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 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.
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 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?
Klotzkopp Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 Aber irgendwie klappt das trotzdem nicht?Das soll jetzt eine ausführlichere Fehlerbeschreibung sein? res=+ (*vec1) * (*vec2); +=, nicht =+
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 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?
Klotzkopp Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 Der findet keine Syntaxfehler aber der startet das Programm trotzdem nicht.Wer ist "der"? Was passiert, wenn du das Programm ausführst?
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 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).
Klotzkopp Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 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?
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 Habe keinen Schrägstrich im Projektnamen. Das war nur ein Pseudoname den ich eben angegeben hatte. IN echt steht dort WS0708.
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 Schade, dass keiner weiss wo der Fehler liegt. Aber trotzdem danke.
Klotzkopp Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 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.
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 ne, kein pseudocode. Ich habe alles eins zu eins vom Quellcode kopiert. Schon komisch, dass es bei dir klappt aber nicht bei mir.
Bubble Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 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.
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 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.
Bubble Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 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.
Bubble Geschrieben 17. Februar 2011 Geschrieben 17. Februar 2011 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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden