PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Array mittels while-Schleife durchgehen?!



Prick
16-06-2003, 19:37
Ist es möglich, einen Array mit unbestimmter Anzahl an "Rows", mittels einer While-Schleife von anfang bis Ende durchzugehen? Mit einer For-Schleife ist es klar, wenn i z.B. die "Zeile" des Arrays darstellt, aber wie sieht das mit einer While schleife aus? "Solange Array nicht sein Ende erreicht hat, mache dies und das ........ ?"

Bin um jede Antwort dankbar und bin mir auch ziemlich sicher, dass das möglich ist.

Danke im Voraus,
h.d.

phate
16-06-2003, 20:28
Hi Prick,

ich stand vor kurzem vor dem selben Problem und das was ich in Erfahrung gebracht habe, fand ich nicht sonderlich hilfreich.

Ein Array unbekannter Länge wirst Du selbst mit einer for-Schleife nicht abgehandelt bekommen, da Dir nicht bekannt ist, wieviel Elemente Dein Array hat. Genauso sieht es auch für die while-Schleife aus.

Es gibt zwei Möglichkeiten.

a) Du baust eine Logik ein, in der Arrays die eine Dir unbekannte Länge aufweisen als letztes Element ein klar definiertes Ende-Element zugewiesen bekommen. Triffst Du auf so ein Element, weisst Du, dass das Ende erreicht ist.

b) Du führst die Länge des Arrays in einer separaten Variable mit (siehe auch z.B. argc in der main-Funktion jedes Parameter-behafteten C-Programms)

Das oben gesagte gilt für C. Soweit ich mich recht entsinne hatte ich auf meiner Suche gelesen, dass es in C++ die Möglichkeit gibt, die Länge zu bestimmen. Das kann Dir aber bestimmt einer der C++'ler besser sagen.

Gruss,

phate

Prick
16-06-2003, 20:54
Das mit der For-Schleife ist klar, sorry, dass ich das hier erwähnte.
Die While-Schleife enthaelt eine Abbruchbedingung, soll also "wahrscheinlich" gar nicht bis zum Ende durchlaufen, sondern vorher "gebraket" werden. Ich glaube, dass es ganz simple ist zu sagen, "solange while-schleife gültig ist"
while(array) oder etwas in der Art, leider geht das somit nicht wirklich. :-)

Wenn sich jemand 100% sicher ist, dass ich falsche liege und eine Lösung zu meinem Problem kennt, wäre ich ihm sehr verbunden, dies hier Preis zu geben. :-)

Vielen Dank,
h.d.

f0rtex
16-06-2003, 20:58
Wenn du das Programm in C++ schreibst, kannst du ja z.B. einen vector (oder andere Contrainer aus der STL) gebrauchen.




#include <iostrem>

using namespace std;

int main()
{
...
vector<int> myarray;
vector<int>::iterator iter;
...
for(iter=myarray.begin(); iter!=myarray.end(); iter++) {
do_something();
}
...
}


greets
f0rtex

samsara
17-06-2003, 00:37
...musst Du erst die Elemente in Deinem array zaehlen, dann fuer diese Anzahl Elemente Deine for oder while Schleife durchlaufen. Du brauchst also zwei Schleifen auf gleicher Hierarchie-Ebene (d.h. nicht geschachtelt) (edit: die erste Schleife zum Zaehlen der Elemente). In VBA Excel habe ich das mal gemacht, in C bin ich noch Anfaenger.

Gruss,

Samsara

pulp
17-06-2003, 10:52
anzahl der elemente bestimmen:

http://www.pronix.de/C/standard_C/c_programmierung_14.shtml#4


vielleicht findest auch bei gtk+ was (glib datentypen)


gruss pulp