Avatar billede folle Nybegynder
21. juli 2001 - 13:30 Der er 11 kommentarer og
1 løsning

returnér liste af strukturer

Jeg har en struktur på denne form:

struct vector
{
  double x;
  double y;
  double z;
};

Hvordan laver jeg en funktion som returnérer et array af vector? Kan man evt. lave en ny struktur som et array af vector og så returnére denne?
Avatar billede jakoba Nybegynder
21. juli 2001 - 13:53 #1
Ja det kan man:

vector[] lavEtArray( int a, int b, int c ) {
    vector[] res = new vector[3];  // tror jeg nok, lidt rusten.
    for (int i=0; i<3; i++ ) {
        res[i] = new vector;      // sku der () efter?
        res[i].x = (double)(a*i);
        res[i].y = (double)(b*i);
        res[i].z = (double)(c*i);
    };
    return res;
};

mvh JakobA
Avatar billede folle Nybegynder
21. juli 2001 - 17:57 #2
Compillerer man funktionen får man en parse error før \"[\" i første linie.
Avatar billede morten2 Nybegynder
22. juli 2001 - 12:24 #3
Du bør ikke bruge navnet vector da det er en klasse i STL.

struct myVector
{
  double x;
  double y;
  double z;
};

myVector* lavEtArray( int a, int b, int c )
{
    myVector* res = new myVector [3];
    for (int i=0; i<3; i++ ) {     
        res[i].x = (double)(a*i);
        res[i].y = (double)(b*i);
        res[i].z = (double)(c*i);
    };
    return res;
};
Avatar billede folle Nybegynder
22. juli 2001 - 15:58 #4
Nope. Parse error før * i linje 8.
Avatar billede kamikaze Nybegynder
22. juli 2001 - 16:44 #5
Det er fordi du bruger C og ikke C++!!!
Avatar billede kamikaze Nybegynder
22. juli 2001 - 16:45 #6
prøv at bruge malloc og ikke new.
Avatar billede jakoba Nybegynder
22. juli 2001 - 16:47 #7
det vil da næppe hjælpe på parsefejl i linien:
    myVector* lavEtArray( int a, int b, int c )
Avatar billede morten2 Nybegynder
22. juli 2001 - 17:57 #8
For standard c

struct myVector
{
  double x;
  double y;
  double z;
};

struct myVector* lavEtArray( int a, int b, int c )
{
    struct myVector* res =
    (struct myVector*)malloc(sizeof(myVector)*3);
    for (int i=0; i<3; i++ ) {     
        res[i].x = (double)(a*i);
        res[i].y = (double)(b*i);
        res[i].z = (double)(c*i);
    };
    return res;
};
Avatar billede haff Nybegynder
22. juli 2001 - 19:14 #9
/Morten2
du kan udgå at skrive struct hele tiden..

typedef struct myVector
{
  double x;
  double y;
  double z;
} myVector;

myVector* lavEtArray(...)
/haff
Avatar billede folle Nybegynder
22. juli 2001 - 20:10 #10
Tak...
Avatar billede emileej Nybegynder
23. juli 2001 - 17:34 #11
svar+lukke lukke lukke :)~
Avatar billede folle Nybegynder
23. juli 2001 - 17:46 #12
Ok  :-)
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