Entwickler-Ecke

Basistechnologien - Ergebnis in einer Schleife als Variable speichern...


Phrase.Share - Fr 04.02.11 18:02
Titel: Ergebnis in einer Schleife als Variable speichern...
Hallöle zusammen :)

naja ich hab das Problem das ich eine Zählervariable namens "i" als Variable speichern möchte. Ich dachte mir das als erstes so:



C#-Quelltext
1:
2:
3:
4:
5:
for (i = 0; i <= (Var1 - Var2); i++)
{
                    Console.Write(i);
                    TMP = i;
}







Nunja weil mir das Problem recht peinlich ist hoffe ich doch auf diskretion :)


Also das Problem ist das ich diese Variable TMP (int) in einer anderen schleife als Laufzeitbedingung verwenden muss....
Ich hoffe ihr könnt mir schnell helfen =)

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Christian S. - Fr 04.02.11 18:13

:welcome:

user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:
Nunja weil mir das Problem recht peinlich ist hoffe ich doch auf diskretion :)

Keine Bange die bleibt in einem öffentlichen Internetforum definitiv gewahrt :mrgreen:

user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:
Also das Problem ist das ich diese Variable TMP (int) in einer anderen schleife als Laufzeitbedingung verwenden muss....
Ich hoffe ihr könnt mir schnell helfen =)

Ich hab ehrlich gesagt Dein Problem nicht wirklich verstanden :oops: Könntest Du versuchen, es genauer zu beschreiben? :-)


Phrase.Share - Fr 04.02.11 18:22


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
for (iSternBaum = 0; iSternBaum <= (Eingabe_Der_Zeilen - (2 * iLeerBaum)); iSternBaum++)
{
Console.Write(src_Stern);
iTMPStern = iSternBaum;
}






/*     For-Schleife für die Sterrne im Baumstamm     */
for (iSternStamm = 0; iSternStamm <= iTMPStern / 4; iSternStamm++)
{
Console.Write(src_Stern);
}




so dies ist ein Teil des Codes. Ich muss vllt noch hinzufügen das diese beiden schleifen jeweils in noch in jeweils einer schleife vorhanden ist. Das ist so ne Schulaufgabe und da ich meinen Lehrer nicht für inkompetent halte ebenso wie meine Mitschüler die wissen, wie man das Internet oder besser gesagt Google benutzt, kann ich leider diesen Quellcode nicht allzu öffentlich machen.



Edit: Und danke Christian dass du mir hilfst meine Posts optisch attraktiver zu gestalten :-*

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Yogu - Fr 04.02.11 18:37

Hallo,

du hast immer noch nicht geschrieben, was denn schief läuft. Was erwartest du, und was passiert stattdessen? Der Code führt ja den Inhalt der ersten Schleife ein paar mal aus, speichert dann den letzten Wert der Variable iSternBaum und kommt dann in eine neue Schleife, die ein viertel mal so oft wiederholt wird wie die erste.

user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:
Edit: Und danke Christian dass du mir hilfst meine Posts optisch attraktiver zu gestalten :-*

Das gibt's übrigens auch zum selber machen ;) Setze einfach ein [cs] vor deinen Code und ein [/cs] danach.

Grüße,
Yogu


Phrase.Share - Fr 04.02.11 19:40

ja richtig entschuldigt wenn ich mich in Programmieren nicht recht ausdrücken kann nur markiert er mir die Variable als Fehler mit der Meldung "Verwendung der nicht zugewiesenen lokalen Variablen iTMPStern

Edit: PM für den gesamten Code


jaenicke - Fr 04.02.11 20:37

Du benutzt die Variable irgendwo ohne ihr einen Wert zugewiesen zu haben. Das ist als ob du dir ein Buch zum Lesen kaufst, aber nicht darauf achtest, ob es ein leeres Notizbuch, ein Malbuch oder ein Roman ist. Naja, und dann hast du eben auch keinen definierten Text unbedingt drin.

Bevor du also eine Variable ausliest, musst du auch etwas hineinschreiben. Sonst steht da zufälliges Zeug drin, und deshalb verhindert C# den Zugriff.
user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:

C#-Quelltext
1:
2:
3:
4:
5:
for (iSternBaum = 0; iSternBaum <= (Eingabe_Der_Zeilen - (2 * iLeerBaum)); iSternBaum++)
{
Console.Write(src_Stern);
iTMPStern = iSternBaum;
}
Warum nicht einfach:

C#-Quelltext
1:
iTMPStern = (Eingabe_Der_Zeilen - (2 * iLeerBaum));                    
Wenn die Variable ohnehin einen festen Wert haben soll, musst du den auch nicht bei jedem Schleifendurchlauf neu zuweisen.


Phrase.Share - Fr 04.02.11 22:01

Also das ist die selbe Methode wie ich sie machen wollte, naja ich seh dort keinen wirklichen unterschied aber auch hier das gleiche möchtest du den Quellcode haben?

wie gesagt wenn ich diesen öffentlich mache, mach ich den unterrichtsplan meines lehrers kaputt, der sich im übrigen hier auch aufhält :P


Mit dem gleichen mein ich "Verwendung der nicht zugewiesenen lokalen Variablen iLeerBaum"


jaenicke - Fr 04.02.11 22:08

user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:
naja ich seh dort keinen wirklichen unterschied
Der Unterschied ist wie gesagt, dass es nicht in der Schleife immer wieder aufgerufen wird, sondern nur einmal außerhalb der Schleife.

user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:
aber auch hier das gleiche
Aha?
user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:
Verwendung der nicht zugewiesenen lokalen Variablen iTMPStern
user profile iconPhrase.Share hat folgendes geschrieben Zum zitierten Posting springen:
Verwendung der nicht zugewiesenen lokalen Variablen iLeerBaum

Wie dem auch sei, ich habe ja schon erklärt was der Fehler heißt: Du hast iLeerBaum bevor du den Wert darin verwendest noch gar keinen Wert zugewiesen.

Das kannst du gern mit einem unterschriebenen Scheck machen, den du mir schickst. Einfach keinen Wert zuweisen und den Scheck verwenden indem du ihn mir schickst. ;-)

Mehr Beispiele fallen mir grad nicht ein zum Vergleich für eine nicht initialisierte Variable. :lol:


Phrase.Share - Sa 05.02.11 14:56

Aber die Schleife inkrementiert doch bevor ich die andere schleife ausführe, das heißt doch das ich den letzten Wert des inkrementierten Zählers speichern muss um ihn wieder zu verwenden


Th69 - Sa 05.02.11 15:05

Kann es sein, daß du eine verschachtelte Schleife suchst bzw. benötigst, d.h.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
for (int i = 0; i < 10; i++)
{
  int tmp = i;

  for (int j = 0; j < tmp; j++)
  {
     // ...
  }
}

???

Dein Beispiel scheint ja die Darstellung eines Baumes zu sein, d.h.

Quelltext
1:
2:
3:
4:
   *
  ***
 *****
*******

Und eine zwei-dimensionale Darstellung benötigt eben 2 ineinander verschachtelte Schleifen (für die X und Y-Dimension).


Phrase.Share - Sa 05.02.11 18:56

Möchtest du den quellcode als pm? also wie das mit den verschachtelten schleifen ist mir bewusst...