for (int i = 7; i < 50; )
{
if (i < 10)
i++;
else if (i >= 10 && i <= 28)
i += 2;
else if (i == 30)
i += 6;
else if (i == 36)
i += 4;
else if (i == 40)
i += 10;
else return;
Console.WriteLine(i.ToString());
}
|
|
|
Nur als Anmerkung. Eine Switch-Anweisung wäre glaub ich der die besser Lösung als else if's
– Floyd 18.09.2009
|
||
|
Leider kann ich meines Wissens nach keine "Ranges" im Switch angeben, oder?!
– Mario Priebe 18.09.2009
|
||
|
Soweit ich weiß ist dem leider so. Zumindest habe ich keinen Weg gefunden, wie man < 10 oder ähnliches einbauen kann, da die switches grundsätzlich eine Konstante erwarten :(
– Dustin Klein 18.09.2009
|
||
|
Range geht nicht aber mehrere case untereinander (ohne break).
– gfoidl 18.09.2009
|
||
|
Ja, so hatte ich das zu erst gedacht, mich dann aber dagegen entschieden
– Mario Priebe 18.09.2009
|
foreach (var item in new int[] {8, 9, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 36, 40, 50})
{
Console.WriteLine(item);
}|
|
int x = 7;
for (int i = 0; i < 16; i++) {
x = x
+ Math.Floor(x / 5)
- Math.Floor(x / 15)
- Math.Floor(x / 20)
- Math.Floor(x / 25)
+ 4 * Math.Floor(x / 30)
- 3 * Math.Floor(x / 35)
+ 6 * Math.Floor(x / 40);
Console.WriteLine(x);
}
|
|
| 1 |
Sehr interessant, was auch gleich noch Gesprächsstoff mit einem Kollegen schaffte ...
Erklärung zu Math.Floor aus der MSDN: Gibt die größte Ganzzahl zurück, die kleiner oder gleich der angegebenen Zahl ist. Find ich gut, gibts n Punkt : ) – Mario Priebe 18.09.2009
|
|
for (int i = 8; i <= 50; i++)
{
bool write = i < 10
|| i < 30 && i % 2 == 0
|| i < 40 && i % 6 == 0
|| i % 10 == 0;
if (write) Console.WriteLine(i.ToString());
}
|
|
for (int i = 7; i < 50;)
{
Console.Write(i += i < 10 ? 1 : i >= 10 && i <= 28 ? 2 : i == 30 ? 6 : i == 36 ? 4 : i == 40 ? 10 : 0);
}
|
|
| 1 |
Du kannst den 'i >= 10 && '-Part sogar weglassen. Du befindest dich ja im else-Teil der Abfrage 'i<10' ergo ist i>=10.
– Charon 18.09.2009
|
|
|
int j = 5, k = 1;
for (double i = 7; i < 50; ) {
i += k;
if ((i % j) == 0)
k = ((int)i / j);
j = (j == 5) ? 9 : (k==4) ? 4 : 5;
Console.WriteLine((int)i);
}
|
|
int res = 7;
for (double i=0; i<16 ; i++){
res += Math.Floor((i+17)/20+1)
+ Math.Floor(i/13)*(i*2-26+(i%2)*4);
Console.WriteLine(res);
}
|
|
|
|