Poblem bei der Ausgabe
-
Hallo.
Habe folgendes Problem:
Ich bin Ein Mathe Student im 3.Semester und muss in diesem semester Programmieraufgaben abgeben.
Habe nun mit hilfe eines Freundes folgendes programm Geschrieben:#include <stdio.h> #define N 3 typedef double Matrix[N][N+1]; typedef double Vector[N]; Matrix matrixA = { {2,2,0,6}, {1,1,2,9}, {2,1,1,7} }; Vector vectorX; void OutputMatrix(Matrix (*matrix)) { unsigned char i, k; for (i = 0; i < N; i++) { for (k = 0; k < N+1; k++) { printf("%f\t", (*matrix)[i][k]); } printf("\n"); } printf("\n"); } void OutputVector(Vector (*vector)) { unsigned char i; for (i = 0; i < N; i++) { printf("%f\n", (*vector)[i]); } printf("\n"); } void OutputPoly(Vector (*vector)) { signed int i; printf("f(x) = "); for (i=N-1; i>=0; i--) { if (i==0) printf("%f", (*vector)[i]); else printf("%f*x**%i + ", (*vector)[i], i); } printf("\n"); } double betrag(double zahl) { if (zahl < 0) return -zahl; else return zahl; } void tausche_zeilen(unsigned int k, unsigned int l) { unsigned int i; double a; for (i=0; i<=N; i++) { a = matrixA[k][i]; matrixA[k][i] = matrixA[l][i]; matrixA[l][i] = a; } } void sub_zeile_mit_faktor(unsigned int i, unsigned int j, double faktor) { unsigned int m; for (m=0; m<=N; m++) { matrixA[i][m] = matrixA[i][m] - faktor * matrixA[j][m]; } } void gauss() { unsigned int j; unsigned int i; unsigned int r = 0; for (j=0; j<=N-2; j++) { r = j; for (i=j; i<=N-1; i++) { if (betrag(matrixA[i][j]) > betrag(matrixA[r][j])) r = i; //printf("%f:abs=%f\n", matrixA[i][j], betrag(matrixA[i][j])); } tausche_zeilen(r,j); OutputMatrix(&matrixA); for (i=j+1; i<=N-1; i++) { sub_zeile_mit_faktor(i,j,matrixA[i][j]/matrixA[j][j]); } OutputMatrix(&matrixA); } } void rueckwaertseinsetzen() { signed int k; unsigned int i; double sum; for (k=N-1; k>=0; k--) { sum = 0; for (i=k+1; i<=N-1; i++) { sum += matrixA[k][i] * vectorX[i]; } vectorX[k] = 1/matrixA[k][k] * (matrixA[k][N] - sum); // printf("%f\n", vectorX[k]); } } int main() { OutputMatrix(&matrixA); //printf("\n\n"); gauss(); OutputMatrix(&matrixA); rueckwaertseinsetzen(); OutputVector(&vectorX); OutputPoly(&vectorX); system("PAUSE"); return 0; }
soooo, das programm funktioniert einwandfrei (wen es interessiert...es ist der Gauß algorithmus mit zeilenpivotsuche und rückwärtseinsetzen.Später muss noch interpoliert werden, deswegen das polynom am schluss).
Nun das Problem.Das Programm lief bei meinem Freund ohne Probleme, aber bei mir kommen bei der Ausgabe Falsche Werte Raus, zB habe ich lauter Nullen in meinen Matrixeinträgen.
Für jede Hilfe Ware ich Sehr dankbar*Mod-Edit - sfds*
-
Hast du das Programm mal durch den Debugger gejagt?
(PS: Das C-Board findest du eine Etage weiter oben)
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
dein Programm kompiliert mit "gcc -W -Wall -pedantic" liefert nach
Entfernen von Kommantarzeichen // und einbinden von stdlib.h (wird
benötigt wegen system()) keine Fehler und das richtige Ergebnis
(ok, ich habe es nicht nachgerechnet.)Wie kompilierst du den Code?
Gruß mcr