ein 2D array aus einer funktion übergeben



  • ok hier mein problem

    hab ne funktion
    die generiert ein dynamisches 2D array
    (nennen wir es mal lottoziehung )

    die funktionen.h spar ich mir mal

    // funktion.cpp
    ??? lottoziehung(int AnzahlZiehungen)
    {
    int ziehungen[Anzahlziehungen][6];

    ...
    hier wird in die ziehungen was geschreiben ( bsp 6x6 aus 49 )
    ...
    return ???;
    }

    die main sollte hinterher so aussehen

    #include<iostream>
    #include "funktionen.h"
    // main
    void main(void)
    {
    int anzahl;
    cout << "Anzahl der Ziehungen: ";
    cin >> anzahl;
    ??? = lottoziehung(anzahl);
    }

    wie bekomme ich das array aus der funktion heraus und in die main übergeben ?

    das benutzen von globalen variabelen ist wegen der aufgabenstellung verboten ( muss absolut modular bleiben )
    mit pointern hab ichs probier
    nur leider wüsste ich nicht wie ich ein array das in einer funktion erstellt wird (bzw dessen speicherbereich) über die laufzeit der funktion hinaus 'sichere'

    mfg derda



  • Bei VLAs geht das halt nich anständig benutz da lieber nen vector<vector<int> >



  • Und noch einen Fehler:
    int main ist richtig void ist falsch!



  • meinst du so etwas?:
    (funktioniert bei mir)

    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int lotto(int zahlen[6]);
    
    int main(int argc, char *argv[])
    {
    int ziehung[6];
    lotto (ziehung); 
    
    for (int i=0; i!=6; i++)
    {
    cout << ziehung[i]<<"\n"; 
    }
    
    system ("pause"); 
    }
    
    int lotto(int zahlen[6])
    {
    zahlen[0]=22;
    zahlen[1]=12;
    zahlen[2]=28;
    zahlen[3]=14;
    zahlen[4]=33;
    zahlen[5]=86;
    }
    


  • hier mein vorschlag du machst dir ne struct
    und dann nimmst du die struct als rückgabe wert
    der funktion also so :

    typedef struct array {
    int array_zahl[10];
    }arrays;

    arrays arr;

    arrays function() {
    arrays give_array;
    give_array.array_zahl[1] = 1;
    ////...............

    return give_array;
    }



  • void lotto(int* zahlen);
    
      //und dann wie gehabt
    
      int ziehung[6];
      lotto (ziehung);
    

    sollts auch tun, allerdings geht sizeof dann nicht mehr richtig weshalb du wenn benötigt die grösse in einem zweiten Parameter übergeben solltest

    [ Dieser Beitrag wurde am 19.03.2003 um 08:02 Uhr von dreaddy editiert. ]


Log in to reply