Avatar billede kaydk Nybegynder
21. maj 2007 - 20:22 Der er 4 kommentarer og
1 løsning

at kopiere en matrice!

Hej, jeg har brug en metode at kopiere en matrice. Altså kopiere i den forstand som vi forstår det (opretter og gemmer en instans af matricen). Men når jeg gør det på den her måde, er det som om, at den laver en pointer/reference til den gamle matrice. Nogen som har et hurtig bud hvad jeg ellers skal gøre?

// kopi af matrice til senere brug for at beholde den orginale


void copyMatrix(double oldMatrix[NMAX][NMAX], double newMatrix[NMAX][NMAX], int n)
{
           
    int i, j;    

    for(i=0;i<n;i=i+1)
    {
        for(j=0;j<n;j=j+1)
        {
            newMatrix[i][j]=oldMatrix[i][j];
        }


    }
}
Avatar billede bertelbrander Praktikant
22. maj 2007 - 00:42 #1
Så vidt jeg lige kan se vil jeres funktion virke.

Dette lille program:
int main()
{
  double M1[NMAX][NMAX], M2[NMAX][NMAX];
    int i, j;
    for(i=0;i<NMAX;i++)
        for(j=0;j<NMAX;j++)
          M1[i][j] = i + j*NMAX;
  copyMatrix(M1, M2, NMAX);
    for(i=0;i<NMAX;i++)
    {
        for(j=0;j<NMAX;j++)
            std::cout << M2[i][j] << " ";
        std::cout << std::endl;
    }
}

Skriver:
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15
Hvilket umiddelbart ser rigtigt ud.

Men der er måske ikke det du ønsker?
Avatar billede kaydk Nybegynder
22. maj 2007 - 00:49 #2
Det virker fint. Det var bare en anden fejl jeg havde. Giv svar for points.
Avatar billede bertelbrander Praktikant
22. maj 2007 - 19:44 #3
Jeg samler ikke på point.
Avatar billede kaydk Nybegynder
22. maj 2007 - 20:07 #4
ok
Avatar billede faerch Nybegynder
06. juni 2007 - 09:04 #5
En alternativ mulighed er at benytte memcpy, som er en standardfunktion der ligger i string.h så vidt jeg husker.

memcpy(M1, M2, sizeof(M1); eller
memcpy(&M1[0][0], &M2[0][0], sizeof(M1);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester