Archief - [PROG][C++] Methode die array teruggeeft

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

jodeman

Legacy Member
Yo,

Ben wat aan het knoeien in C++, nu wil ik gewoon vanuit een methode een array teruggeven. Heb al hele tijd liggen proberen en knoeien maar het lukt niet. Wordt eens dringend tijd dat ik een C++ boek doorneem.

Hier is de code
Code:
#include <iostream>
using namespace std;

class Breuk {
    public:
    int verm(int,int,int,int);
    int grgede(int,int);
};

int Breuk::verm(int t1,int n1,int t2,int n2) {
    int proda = t1 * t2;
    int prodb = n1 * n2;
    
    int grgd = grgede(proda,prodb);

    int test[2];
    int uitkt = proda / grgd;
    int uitkn = prodb / grgd;
    
    test[0] = uitkt;
    test[1] = uitkn;
    
    return test;
}

int Breuk::grgede(int a,int b)
{  
    int grootste = (a > b ? a : b);
    int kleinste = (a < b ? a : b);    
    
    int rest = grootste % kleinste;
    while (rest != 0)
    {
          grootste = kleinste;
          kleinste = rest;
          rest = grootste % kleinste;
    }
    
    return kleinste;
}

int main () {
    Breuk test;
    cout << test.verm(3,8,4,5);;
    system("pause");
    return 0; 
}

gewoon vanuit de methode verm wil ik de array met de waarden van teller en noemer krijgen...

Cheers

servi

Legacy Member
voor arrays door te geven heb je pointers nodig.


int* Breuk::verm(int t1,int n1,int t2,int n2) {
int proda = t1 * t2;
int prodb = n1 * n2;

int grgd = grgede(proda,prodb);

int *test = new int[2];
int uitkt = proda / grgd;
int uitkn = prodb / grgd;

test[0] = uitkt;
test[1] = uitkn;

return test;
}


int main () {
Breuk test;
int resultaat = *test.verm(3,8,4,5,resultaat);
for(int i = 0; i < 2; i++ )
cout << resultaat;
delete [] resultaat;

system("pause");
return 0;
}

kwitters

Legacy Member
Hey jodeman,

Arrays moet je inderdaad via pointers doorgeven. Maar ik heb de indruk dat je geen C++ programmeert, maar eerder C met classes :naughty:

Ten eerste: Arrays are evil in C++, dus zoveel mogelijk proberen te vermijden.
En ten tweede zou ik "Breuk" echt in C++ stijl programmeren (met operator overloading), en dan heb je zelfs geen array's nodig :) :

Code:
class Breuk {
    public:
        Breuk( int teller, int noemer );

        Breuk operator*( const Breuk& b ) const;

    private:
        static int grgede( int a, int b );

        int my_teller;
        int my_noemer;

        friend ostream& operator<<( ostream &os, const Breuk& breuk );
};

Breuk::Breuk( int teller, int noemer ) :
    my_teller( teller ),
    my_noemer( noemer )
{}

Breuk Breuk::operator*( const Breuk& b ) const {
    int proda = my_teller * b.my_teller;
    int prodb = my_noemer * b.my_noemer;
    
    int grgd = grgede( proda, prodb );

    return Breuk( proda / grgd, prodb / grgd );
}

int Breuk::grgede( int a, int b ) {  
    int grootste = (a > b ? a : b);
    int kleinste = (a < b ? a : b);    
    
    int rest = grootste % kleinste;
    while( rest != 0 ) {
        grootste = kleinste;
        kleinste = rest;
        rest = grootste % kleinste;
    }
    
    return kleinste;
}

ostream& operator<<( ostream &os, const Breuk& breuk )
{
    os << "[" << breuk.my_teller << "/" << breuk.my_noemer << "]";
    return os;
}

int _tmain(int argc, _TCHAR* argv[])
{
    Breuk a = Breuk( 3, 8 );
    Breuk b = Breuk( 4, 5 );
    cout << a << " * " << b << " = " << (a * b) << endl;

    system("pause");
    return 0;
}

Zeker nog eens een C++ boek lezen zou ik zo zeggen! Die taal heeft zoveel in zich dat ge gewoon dingen kunt blijven bijleren (geloof me maar ;) )
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan