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; } Zitieren
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. Zitieren
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? Zitieren
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 =+ Zitieren
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? Zitieren
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? Zitieren
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). Zitieren
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? Zitieren
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. Zitieren
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 Schade, dass keiner weiss wo der Fehler liegt. Aber trotzdem danke. Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
Adrenalin88 Geschrieben 17. Februar 2011 Autor Geschrieben 17. Februar 2011 danke für den Hinweis . Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.