WinFuture-Forum.de: C# - Schleifen Abwechselnd Durchlaufen? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

C# - Schleifen Abwechselnd Durchlaufen?


#1 Mitglied ist offline   free 

  • Gruppe: aktive Mitglieder
  • Beiträge: 948
  • Beigetreten: 18. Dezember 04
  • Reputation: 0

geschrieben 17. Mai 2006 - 15:36

Hi,
bräuchte mal eure Hilfe.
Ich habe hier 2 for-schleifen. Diese müssen abwechselnd durchlaufen werden.
Wie kann ich das machen?
{
			for (int i = 0;i<myList.Count;i++)
				{
					if(myList[i].Equals(" "))
					{
						for(int j = i;!myList[j].Equals("#####");j++)
						{
							listBox2.Items.Add(myList[j]);
						}
					}
				}
			for (int i = 2;i<myList.Count;i++)
				{
					if(myList[i].Equals(" "))
					{
						for(int j = i;!myList[j].Equals("#####");j--)
						{
							listBox2.Items.Add(myList[j+1]);
						}
					}
				}
		}


Die beiden äußeren sollen jeweils abwechselnd durchlaufen werden.
Wie kann ich das machen?

Danke!

mfg,
free
Eingefügtes Bild
0

Anzeige



#2 Mitglied ist offline   tobiasndw 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.815
  • Beigetreten: 24. September 03
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 17. Mai 2006 - 15:38

Abwechselnd?, also bei jedem Aufruft der Seite, einmal die 1 For-Schleife und beim 2. Aufruft der Seite die 2. For-Schleife und dann wieder die 1. ... so?
0

#3 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 17. Mai 2006 - 15:46

Du könntest die beiden Schleifen in eine switch()-Anweisung schreiben und einen weiteren Counter versehen, der entweder den Wert "0" oder den Wert "1" hat. "case 0" steht für die erste Schleife, in der der Counter auf "1" gesetzt wird. "case 1" bedeutet zweite Schleife, in der der Counter wieder auf "0" gesetzt wird. Kann man aber vielleicht auch intelligenter lösen :wink:

Dieser Beitrag wurde von Graumagier bearbeitet: 17. Mai 2006 - 15:46

"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#4 Mitglied ist offline   free 

  • Gruppe: aktive Mitglieder
  • Beiträge: 948
  • Beigetreten: 18. Dezember 04
  • Reputation: 0

geschrieben 17. Mai 2006 - 16:33

Hmm...
Ich muss halt die zwei Items abwechselnd in die Listbox einfügen.
Eingefügtes Bild
0

#5 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 17. Mai 2006 - 19:28

Hättest du vielleicht Daten der bspw myList für uns?
Weil mir persönlich noch nicht klar geworden ist, wie das Ding zu Beginn und wie die listBox am Ende aussehen soll. So was kann man nämlich in der Regel immer in einer Schleife lösen.
0

#6 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 17. Mai 2006 - 20:10

Die Frage ist wohl eher, wie die Abbruchbedingung aussehen soll. Da du myList.Count stets abfragst, gehst du davon aus, daß ein anderer Thread in die Liste schreiben kann. Soll die kombinierte Schleife verlassen werden, wenn nur einer der Vorgänge oder wenn beide oder nur der erste oder nur der zweite versagt?

Und wie genau soll das Interleaving am Anfang aussehen? Sollen sie stets abwechseln arbeiten und dann erst am Ende die zweite Schleife aussteigen, oder sollen sie mit i gleich laufen?

Im letzteren Falle wäre es ja performancemäßig optimal, die erste Schleife aufzuteilen und dann mit der zweiten zu verschmelzen.
int length = myList.Count;
int length0 = min(length,2);

for (int i = 0;i<length0;i++)
	if(myList[i].Equals(" "))
		for(int j = i;!myList[j].Equals("#####");j++)
			listBox2.Items.Add(myList[j]);
	
for (int i = 2;i<length;i++)
	if(myList[i].Equals(" ")) {
		for(int j = i;!myList[j].Equals("#####");j++)
			listBox2.Items.Add(myList[j]);
		for(int j = i;!myList[j].Equals("#####");j--)
			listBox2.Items.Add(myList[j+1]);
	}

Dieser Beitrag wurde von Rika bearbeitet: 17. Mai 2006 - 20:11

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0