Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Matrzienmultiplikatio

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.06.2006, 10:08 Uhr
~fraggle2
Gast


Habe das Problem, das mir nach dem Ausführen bei der Ergebnisausgabe die Meldung bekomme:
Die Anweisung in "0x0000000" verweist auf Speicher in
"0x00000000". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden.
Was muss ich ändern um dies zu beheben? Ich bin am verzweifeln!!

C++:

#include <iostream.h>
#include <math.h>
void main()
{
    int A[9][9],B[9][9],C[9][9];
    int h1,h2,b1,b2;
    int a,b,c,d=0;

    for(b=0;b<10;b++)
    {
        for(a=0;a<10;a++)
        {
            A[a][b]=0;
            B[a][b]=0;
            C[a][b]=0;
        }
    }

    cout<<"Matrix 1 Hoehe        :";
    cin>>h1;
    cout<<"Matrix 2 Hoehe        :";
    cin>>h2;
    cout<<"Matrix 1 Breite        :";
    cin>>b1;
    cout<<"Matrix 2 Breite        :";
    cin>>b2;
    
    
    
    if((b1==h2) && h1<10 && h2<10 && b1<10 && b2<10 && h1>0 && h2>0 && b1>0 && b2>0)
    {
        cout<<endl<<endl;
        cout<<"Bitte Matrix 1 eingeben"<<endl<<endl;
        for(a=0;a<h1;a++)
        {
            for(b=0;b<b1;b++)
            {
                cin>>A[b][a];
                cout<<"        ";
            }
            cout<<endl;
        }
        cout<<endl<<endl;
        cout<<"Bitte Matrix 2 eingeben"<<endl<<endl;
        for(a=0;a<h2;a++)
        {
            for(b=0;b<b2;b++)
            {
                cin>>B[b][a];
                cout<<"        ";
            }
            cout<<endl;
        }
        for(b=0;b<h1;b++)
        {
            for(a=0;a<b2;a++)
            {
                for(c=0;c<b1;c++)
                {
                    d = A[c][b]*B[a][c];
                    C[a][b]=C[a][b] + d;
                }
            }
        }
        cout<<endl<<endl<<endl;
        cout<<"Ihre berechnete Matrix:"<<endl<<endl;
        for(a=0;a<h1;a++)
        {
            for(b=0;b<b2;b++)
            {
                cout<<C[b][a];
                cout<<"      ";
            }
            cout<<endl;
        }
    }
    else
            cout<<"Fehler! Die Matrix kann nicht berechnet werden!"<<endl;
    
    
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.06.2006, 11:02 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Du greist irgendwo im Code auf Speicher zu der dir nicht gehört...
Beispiel zur Matrixmultiplikation www.fun-soft.de/showtopic.php?threadid=3085
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.06.2006, 12:57 Uhr
Tommix



Hallo,

Zitat:

C++:
int A[9][9];



reserviert Speicher für 9x9 Elemente, nämlich A[0][0] bis A[8][8]. Du greifst aber auf 10x10 Elemente bis A[9][9] zu:

Zitat:

C++:
    for(b=0;b<10;b++)
    {
        for(a=0;a<10;a++)
        {
            A[a][b]=0;
            B[a][b]=0;
            C[a][b]=0;
        }
    }



D. h. es muß
C++:
int A[10][10]
usw. heißen.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: