Problem 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