Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » arrays als rückgabewerte

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.03.2006, 13:43 Uhr
~Luja
Gast


Hallo, hier mal eine Anfängerfrage:

Ich habe ein Problem mit der Rückgabe eines Arrays aus einer Funktion.
In der Funktion befindet sich eine Schleife die bei jedem Durchlauf einen Wert an die main zurückgegeben soll (wobei diese Werte noch von einer weiteren Funktion bearbeitet werden sollen). Da die schrittweise Übergabe nicht funktioniert weil der Wert immer wieder überschrieben wird, dachte ich ein Array könnte hier die Lösung sein.
Wenn dem so sein sollte, wie übergebe ich das Array an die Funktion, wie fülle ich das und wie gebe ich das gefüllte array dann an die main zurück?


C++:
datei2.open("raetsel.txt");
     nummerE=schleife3(datei2, onummer);  
     //hier soll die funktion mit einem array aufgerufenwerden
     datei2.close();
.
.
.
     case '\n':
    {
              
             if (onummer==raetsel.nummer)
             {
            
                          buffer2[counter2]='\0';
                          counter2=0;
                          raetsel.loesungen=atoi(buffer2);

          cout<<raetsel.loesungen<<" Loesungen "<<endl;
                     nummerE=raetsel.aufgaben;
                       }

    break;

//wie fülle ich das array nummerE mit raetsel.aufgaben?


Danke,
Luja


Bearbeitung:
tääääääägs!!!!

Dieser Post wurde am 23.03.2006 um 13:48 Uhr von kronos editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.03.2006, 13:57 Uhr
kronos
Quotenfisch
(Operator)



Zitat von ~Luja:
In der Funktion befindet sich eine Schleife die bei jedem Durchlauf einen Wert an die main zurückgegeben soll

Eine Funktion gibt pro Durchlauf nur einmal was zurück, das ist klar, oder?

Meinst du sowas:

C++:
int * f(int n)
{
int * ret = new int[n];
for(int i=0;i<n;++i)
ret[i]= // ...deine Werte...
return ret;
}

f gibt einen int-array der länge n zurück.
delete nicht vergessen!
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.03.2006, 14:33 Uhr
~Luja
Gast


Das ist schonmal ganz hilfreich, mein Problem ist jetzt noch, dass das Ganze in einer Schleife steht und somit i immer wieder auf 0 gesetzt wird statt bei jedem Durchlauf der Schleife i um 1 zu erhöhen.

Kann ich i=0 irgendwie vor die Schleife schreiben und trotzdem die for Schleife mit Abbruchbedingung beibehalten

Gruß,
Luja
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.03.2006, 20:39 Uhr
kronos
Quotenfisch
(Operator)


Kann dir ehrlich gesagt nicht ganz folgen.. .Vllt zeigst du mal den code?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.03.2006, 15:09 Uhr
~Luja
Gast


Hallo nochmal, hier etwa zur Klärung des Problems(?).

while (!datei.eof())
{
datei.get(zeichen);
if (datei.eof())
{
return zahl;
break;
}
switch (zeichen)
{
case (' '):
{
if (zustand==1)
{
zustand=2;

}
else

if (zustand==2 && letztes!=' ')
{
buffer[zaehler]='\0';
zaehler=0;
bezahl.nummer=atoi(buffer);
zustand=3;

}
else
if (zustand==3)
{

buffer[zaehler]='\0';
zaehler=0;
bezahl.teil=atoi(buffer);
zustand=4;

}
else
if (zustand==4)
{

buffer[zaehler]='\0';
zaehler=0;
beziehungen.anzahl=0;
beziehungen.anzahl=atoi(buffer);
zustand=1;

}

break;
}
case '0':
{

buffer[zaehler]=zeichen;
zaehler++;
break;
}
case '\n':
{

if (nummer==bezahl.nummer)
{

buffer[zaehler]='\0';
zaehler=0;
beziehungen.anzahl=atoi(buffer);

for (int i=0;i<250; i++)

{ // So wird i ja immer wieder auf 0 gesetzt, ich will aber i bei jedem Aufruf der Schleife
// um 1 erhöhen. i ausserhalb der Schleife zu initialisieren könnte ich ja, dann funktioniert //die for-Bedingung allerdings nicht mehr. HILFE! ;(


cout<<beziehungen.anzahl<<endl;
}


zahl=bezahl.teil;

}

break;

}

}
letztes=zeichen;

}

}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: