C# 1-10 und dann 10-1 in einer eintigen for-Schleife - wie?
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
-
Hallo,
ich bin gerade dabei zusammen mit meiner Klasse C# zu lernen. Ich bin begeistert was für lustige Sachen man machen kann. Nun haben wir eine Aufgabe, einen Zähler, der bei 1 Anfängt und bei 10 aufhört mithilfe einer for()-Schleife zu machen, allerdings soll der dann auch noch, wenn er bei 10 angelangt ist wieder zurück auf 1 Zählen und dann das Programm anhalten.
Ich dachte mir zuerst, dass es unmöglich sei, aber er bestand darauf, dass es möglich wäre. Kennt ihr eine Seite, bei der das steht bzw. wisst ihr wie man das anstellt?
Ich hatte es mit
probiert aber das führte zu nichts...for(i=1;i<10;-i=i++)
edit by bladehunter: Falls hier nochmal jemand eine Lösung mit 2 for-schleifen postet, wird der Eintrag kommentarlos gelöscht, da dies nicht der Aufgabenstellung entspricht!
Beitrag zuletzt geändert: 12.11.2010 19:33:37 von bladehunter -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
C# hat nix mit C/C++ und D zu tun. Verschoben nach Sonstige Programmiersprachen.
edit: Verschoben in unser funkelnagelneues .NET Forum.
Folgender D Code sollte dir weiterhelfen:
#!/usr/bin/dmd -run import std.stdio; int main( char[][] args ) { int inc = 1; for( int i = 1; i > 0 ; i+= inc ) { writeln( i ); if( i == 9 ) { inc = -1; } } return 0; }
C# kann ich nicht
Beitrag zuletzt geändert: 8.11.2010 20:36:10 von bladehunter -
Naja du könntest einfach einen Zähler machen der intern in der For-Schleife zählt, und die For-Schleife entsprechend öfters laufen lassen.
Also in etwa so:
zaehler = 1; for(i=1; i<20; i++) { if(zaehler == 10){ zaehler--; } else{ zaehler++; } }
Der Code soll nur zu Veranschaulichung dienen, ich kenn mich null mit C# aus :D
Beitrag zuletzt geändert: 8.11.2010 18:34:58 von alfr3d -
Dein Code ist schwachsinn, alfred... und würde in einer Endlosschleife enden.
Immer wenn zaehler 10 wird dekrementierst du um 1 um im nächsten Schritt wieder um eins zu inkrementieren, wodurch der Wert wieder 10 wird und so weiter...
Grüße,
Adrians
PS: Mit einem boolean, den man toggled würde es funktionieren. Ich finde allerdings bladehunters Variante ungemein eleganter und würde das ganze genauso lösen. Das umschreiben auf C# dürfte das kleinste Übel sein.
Beitrag zuletzt geändert: 9.11.2010 22:46:41 von adrians -
Bitfrickelei (funktioniert so in PHP und diversen Scriptsprachen). Dürfte auch in C klappen. Wenn C# Bitshifting hat, gehts da auch:
// $x ist 32 bit (signed|unsigned ist egal) for ($x = 0x1ff, $i = 1; $i; $i += $x & 1 ? 1 : -1, $x >>= 1) { printf(' %s ', $i); }
Elegant ist aber was anderes ...
alfr3d schrieb:
zaehler = 1; for(i=1; i<20; i++) { if(zaehler == 10){ zaehler--; } else{ zaehler++; } }
Meintest du "if (i == 10) ..." ?
Beitrag zuletzt geändert: 11.11.2010 0:51:15 von alopex -
for ($i = 1; $i < 19; ++$i) { echo $i > 10 ? 20 - $i : $i, "\n"; }
-
Ich hatte es geschafft mit 2 Variablen. Ging recht einfach schauts euch an:
#include "stdafx.h" int main(void) { int max = 10; int i; int c = max; int limit = 2*max; for(i=1;i<limit;i++) { if(i>max) { c--; printf("%d\n",c); }else{ printf("%d\n",i); } } return 0; }
In diesem Fall ist dieser Zähler sogar noch beliebig wählbar, bis wohin der Zähler zählen muss. -
Hey! Das ist C und kein C#! Und du hast mehr als 2 Variablen verwendet.
Viel kürzer:
#include <stdio.h> int main( int argc, char ** args ) { int i, inc = 1; for( i = 1; i > 0 ; i+= inc ) { printf( "%i\n", i ); if( i == 9 ) { inc = -1; } } return 0; }
-
decimal counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter <10);
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter--;
} while (counter >=0);
Kommt zwar 12 Jahre zu spät aber ich lerne C# selbst gerade erst
hier das gnaze nochmal mit einer for schleife:
for(int counter = 0; counter <= 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
for(int counter = 10; counter >=0; counter--)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
Beitrag zuletzt geändert: 3.8.2022 9:52:24 von mk4y -
Kommt zwar 12 Jahre zu spät aber ich lerne C# selbst gerade erst
Schaue mal auf YouTube.
Dort gibt es Videos zu lernen von C#:
-
Vielleicht wäre das eine Lösung :D
int inc = 1; for(int i = 1; i != 0; i += inc) { Console.WriteLine(i); if(i > 9) { inc = -1; } }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage