int Array befüllen

a400

Mitglied
Hallo,
ich hab eine kurze, kleine Frage bezüglich eines int array[]
Und zwar will ich dieses Array mit Zufallszahlen füllen. Das ganze läuft so ab, ich rufe eine Funktion auf, die mir eine Zahl zurückgibt, diese soll dann in das Array geschrieben werden, an die erste freie Stelle.
Das ganze hab ich mir zur Zeit so aufgebaut:

Code:
int array[10];
int zahl=0 ;
 
 
int test()
{
// nur mal so als Beispiel
return 2;
}
 
void einfuegen()
{
for(int i =0; i<=zahl;i++)

{

array[i]=test();



}

}

Jetzt tritt aber das Problem auf, das beim ersten durchlauf das Array an der Stelle 0 gefüllt wird und bei einem weiteren Durchlauf ja nicht mehr die Stelle 0 gefüllt werden soll, sondern die Position 1. des Arrays, also array[1].
Ich versuche quasi i und zahl jeweils um 1 zu erhöhen, damit das array fortlaufend gefüllt wird. Wie macht man das, denk ich hier total in die verkehrte Richtung, oder geht das auch einfacher mit dem füllen immer an der letzten Stelle?
 
Hi.

Wenn du der Variablen "zahl" den Wert 9 zuweist sollte das Ganze funktionieren.

Du darfst den Wert der Variablen zahl nicht ändern. zahl ist in deinem Programm der Index des letzten Elementes in deinem Array array.

Da array 10 Elemente hat (laut deiner Definition in deinem Programm) und die Indizierung von Arrays bei 0 beginnt gibt es die Elemente array[0], array[1], array[2], ..., array[8] und array[9].

Wenn man das bedenkt, dann muß man eine for-Schleife erstellen, die von 0 bis 9 "läuft" um das ganze Array zu füllen.

Traditionell macht man das Ganze etwa so:
Code:
const int asize = 10;
int array[asize];

for (int i = 0; i < asize; ++i) {
   /* ... */
}
Der Vorteil ist, dass man jetzt die Zahl der Elemente des Arrays nur noch an einer Stelle anpassen muß und der Code dennoch richtig funktioniert.
 
Yo, danke, dann werd ich das mal so anwenden, bloß ein Punkt bleibt dabei noch offen, ich will ja nicht das ganze Array mit dieser Testzahl füllen, sondern jeweils nur die letzte Position.

Die Funktion test() war ja nur ein Beispiel, damit ich nicht so viel Code poste, in Wirklichkeit liefert sie jeweils eine andere Zahl zurück. Und da will ich jetzt die Zahlen, die sie zurückliefert in das Array einfügen. Also z.B. Position 0 des Arrays ist die Zahl 2; Position 1 ist z.B. 5, Position 3 z.B. 9 usw.

Ich such nach der Möglichkeit, immer nur eine Zahl an das Array anzuhängen....
 
Achso. Also du willst, wenn du die Funktion einfügen aufrufst genau eine Zahl in das Array schreiben. OK.

Da brauchst du dann natürlich keine Schleife.
Code:
void einfuegen()
{
  /* zuerst prüfen ob das Array schon voll ist. */
  if (zahl < 10) {
    array[zahl] = test ();
    zahl++;
  }
}

Vielleicht sollte die Funktion einen Rückgabewert haben, der anzeigt ob das Einfügen erfolgreich war oder ob das Array schon voll war?

/edit: wobei man die Zahl 10 am besten wieder durch die Konstante "asize" ersetzen sollte.
 
Okay, super hab vielen Dank, jetzt klappt es und ich habe die Funktion von void in int umgewandelt, so dass ich jetzt auch noch einen return-Wert habe.
Danke!
 
Zurück