Probleme mit Arrays



  • Irgendwie stehe ich gerade voll auf der Leitung...

    wo liegt hier der Fehler:

    #include <iostream>
    #include <math.h> 
    using namespace std;
    
    /*
    	Darstellung von quadratischen Matrizen als Felder:
    	z. B. Matrix[16]
    	entspricht:
    	( Matrix[0]    Matrx[1]    Matrix[2]	Matrix[3] )
    	( Matrix[4]    Matrx[5]    Matrix[6]	Matrix[7] )
    	( Matrix[8]    Matrx[9]    Matrix[10]	Matrix[11] )
    	( Matrix[12]   Matrx[13]   Matrix[14]	Matrix[15] )
     */
    
    void print(const double Matrix[], int numElements)
    {
    	int iHalf = sqrt((double)numElements);
    
    	for(int y = 0; y < iHalf; y++)
    	{
    		for(int x = 0; x < iHalf; x++)
    		{
    			cout<<Matrix[x+iHalf*y]<<"\t";
    		}
    
    		cout<<endl;
    	}
    }
    
    void init_rand(double Matrix[], int numElements, int maxRand)
    {
    	// numElements = sizeof Matrix / sizeof Matrix[0];	
    	// <- Funktioniert nur wenn Matrix ein Array und kein Zeiger ist
    	for(int i = 0; i < numElements; i++)
    	{
    		Matrix[i] = rand() % (maxRand+1);
    	}
    }
    
    int main()
    {
    	double Matrix[4];
    	init_rand(Matrix, 4*4, 16);
    	print(Matrix, 4*4);
    
    	int dummy;
    	cin>>dummy;
    }
    

    Bekomme folgende Fehlermeldung: Stack around the variable 'Matrix' was corrupted.



  • Du erzeugst ja auch nur ein Array mit 4Elementen und nicht mit 16 ⚠



  • genau das meinte ich mit "voll auf der Leitung stehen"

    danke


Anmelden zum Antworten