Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
24.01.2004, 11:23
McMapper



Hallo. Folgendes, ich will einer Funktion ein 2d Array per reference übergeben. Die Funktion hat als Argument dementsprechend einen float **. Wenn ich aber beim Aufruf ftk(m) das 2d Array m (besser gesagt die Anfangsadresse) übergeben will, kriege ich einen Error:

599 F:\Editors\Miniprojekt\painter\painter.cpp
cannot convert `float (*)[3]' to `float**' for

Wie kriege ich denn die Anfangsadresse von einem 2d Array?

mfg

--


Dieser Beitrag wurde am 24.01.2004 um 14:35 von theDon bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
24.01.2004, 11:37
CN



vielleicht zeigst du mal den code her..

--

zum Seitenanfang zum Seitenende Profil || Suche
002
24.01.2004, 11:43
McMapper



Quellcode:void matrixFill(float **m, float **tx)
{
    for(int a=0;a<3;a++)
    {
        for(int b=0;b<3;b++)
        {
            m[a][b]=tx[a][b];
        }
    }
}
und der aufruf:

Quellcode:...
matrixFill(m,t1); //m,t1 sind float[3][3]
...
[EDIT] Ka warum das so gross ist. Habs in Opera gemacht

--


Dieser Beitrag wurde am 24.01.2004 um 11:44 von McMapper bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
24.01.2004, 11:44
Onkel Dittmeyer



/edit
Sind es float[3][3] oder float (*)[3]?

--


Dieser Beitrag wurde am 24.01.2004 um 11:46 von Onkel Dittmeyer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
24.01.2004, 11:49
McMapper



float[3][3], eine 3 mal 3 matrix aus floats halt ...

--

zum Seitenanfang zum Seitenende Profil || Suche
005
24.01.2004, 11:52
K-Putt



Wie kommst du darauf
Quellcode:float **m
im Funktionskopf zu verwenden?

Wenn du ein 2d array verwendest, bedeutet das nicht dass du 2 * brauchst.

Oder täusch ich mich da gewaltig?

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database


Dieser Beitrag wurde am 24.01.2004 um 11:52 von K-Putt bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
24.01.2004, 11:52
CN



Zitat:
[11:49:22] <cn> so geht das auch: void matrixfill(float from[][3], float to[][3])
Quellcode:void matrixfill(float from[][3], float to[][3])
{
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            to[i][j] = from[i][j];
}
"<McMapper> naja man hat dich ja im thw vid gesehn ..."
find ich geil wie mcmapper mit hilfe umgeht

--


Dieser Beitrag wurde am 24.01.2004 um 11:53 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
24.01.2004, 11:55
K-Putt



cn, deine Funktion ist doch mehr oder weniger sinnlos, weil die an die Funktion übergebenen Arrays ja unberührt bleiben

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
008
24.01.2004, 11:57
CN



ne

teste doch mal:

Quellcode:#include <iostream>

using namespace std;

void matrixfill(float from[][3], float to[][3])
{
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            to[i][j] = from[i][j];
}

int main()
{
    float d[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8 ,9}};
    float f[3][3] = {{10, 11, 12}, {13, 14, 15}, {16, 17, 18}};
    
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            cout << d[i][j] << endl;
        
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            cout << f[i][j] << endl;

    matrixfill(d, f);
        
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            cout << f[i][j] << endl;
        
    return 0;
}
krieg ich fast schon leviathanitis von dem for.. is aber nur en beispiel

--


Dieser Beitrag wurde am 24.01.2004 um 11:59 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
24.01.2004, 12:08
K-Putt



Habs eben selber getestet, es funktioniert tatsächlich.
Jetzt bin ich aber verwirrt.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
010
24.01.2004, 12:10
CN



vielleicht is das ein hinweis:
Quellcode:cout << "d: " << d << "\nf: " << f << endl;:D

--


Dieser Beitrag wurde am 24.01.2004 um 12:10 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
011
24.01.2004, 12:23
gerk



Und so kannst du das Ganze für Arrays beliebiger Dimensionen verwenden:

Quellcode:#include <iostream>

using namespace std;

void matrixfill(float* from, float* to, int x, int y)
{
    for(int i = 0; i < x; ++i)
        for(int j = 0; j < y; ++j)
            to[i*x + j] = from[i*x + j];
}

int main()
{
    float d[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8 ,9}};
    float f[3][3] = {{10, 11, 12}, {13, 14, 15}, {16, 17, 18}};
    
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            cout << d[i][j] << endl;
        
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            cout << f[i][j] << endl;

    matrixfill(&d[0][0], &f[0][0], 3,3);
        
    for(int i = 0; i < 3; ++i)
        for(int j = 0; j < 3; ++j)
            cout << f[i][j] << endl;
        
    return 0;
}
Wenn mans braucht, kann man das Teil noch als Templatefunktion hinklatschen, und für jeden Datentyp verwenden.

--

„Und da wir uns ja seit heute etwas näher gekommen sind, kann ich nur sagen: Mir hilft da immer Norther volle Lautstärke (so wie jetzt), sodass die ganzen unrasierten, Wasserpfeife rauchenden, alternativen Wichsstudenten aus ihren, aus Bananenschalen und Abfall gebastelten, Sitzkissen fliegen.“


Dieser Beitrag wurde am 24.01.2004 um 12:56 von Zgerk bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
24.01.2004, 17:11
blair



ich würde ganz schwer empfehlen, in dem template auch gleich die größe der matrix anzugeben und das nicht über parameter zu machen.

--

because our freedom sits at the end of a gun
we're all here getting beat up and held back
we're all here digging knives from our backs

zum Seitenanfang zum Seitenende Profil || Suche
013
27.01.2004, 10:46




(none)

--

zum Seitenanfang zum Seitenende Profil || Suche