Weergegeven resultaten: 1 t/m 3 van 3
  1. #1
    Member
    Lid sinds
    27/09/04
    Berichten
    873
    iTrader
    2 (100%)

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

    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

  2. #2
    Member servi's schermafbeelding
    Lid sinds
    1/07/02
    Locatie
    Zolder
    Berichten
    2.720
    iTrader
    6 (100%)
    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[i];
    delete [] resultaat;

    system("pause");
    return 0;
    }

  3. #3
    Hey jodeman,

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

    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 )

Discussie informatie

Users Browsing this Thread

Op dit moment bekijken 1 gebruikers deze discussie. (0 leden en 1 gasten)

Regels voor berichten

  • Je mag geen nieuwe discussies starten
  • Je mag niet reageren op berichten
  • Je mag geen bijlagen versturen
  • Je mag niet je berichten bewerken
  •