Wie füge ich eine Abfrage Möglichkeit ein in C#, sodass der Nutzer eine ungerade Zahl eingibt und sich dadurch das "Rautenerstellungsprogramm" auslöst s.u.?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich habe dir das jetzt mal programmiert. Siehe dir meine Syntax an und versuche, zu interpretieren und es ggf. auf deinen Code zu übertragen.

{
Console.WriteLine("Bitte Größe eingeben.");

int size = Convert.ToInt32(Console.ReadLine());
int deductor = 1;

for (int Zahler = 0; Zahler <= size; Zahler++)
{
for (int S = size; S > Zahler; S--)
{
Console.Write(" ");
}

Console.Write("*");

if (Zahler > 0)
{
for (int k = 1; k <= deductor; k++)
{
Console.Write(" ");
}
deductor += 2;
Console.Write("*");
}
Console.WriteLine();
}

deductor -= 4;

for (int Counter = 0; Counter <= size - 1; Counter++)
{
for (int SmallCounter = 0; SmallCounter <= Counter; SmallCounter++)
{
Console.Write(" ");
}

Console.Write("*");

for (int k = 1; k <= deductor; k++)
{
Console.Write(" ");
}
deductor -= 2;

if (Counter != size - 1)
{
Console.Write("*");
}
Console.WriteLine();
}
Console.ReadLine();
} }

MfG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
for (int x = 9; x <= BREITE; x = x - 2)

Also hier ist ja schon einmal das Problem mit der Endlosschleife. Du fängst bei 9 an und zählst runter, solange x KLEINER/GLEICH der Breite ist. Wenn die Breite >= 9 ist, gilt das IMMER und die Schleife bricht niemals ab.

Da muss also folgendes stehen:

for (int x = BREITE; x > 0; x -= 2)

Was ist denn jetzt eigentlich die Frage? Wie Du prüfst, ob die Zahl ungerade ist, die der User eingibt?

bool ungerade = (zahl % 2) == 1;


MJH92 
Fragesteller
 10.11.2017, 10:20

nein ich soll davon ausgehen das der user immer zun 100% eine ungerade zahl eingibt und sich die raute danach richtet und so ausgegeben wird. Quasi das die raute so ausgegeben wird in der größe wie die ungerade zahl eingegeben wird und nicht gleich belibt und das die raute wie oben beschrieben nicht gefüllt ist sondern innen leer ist.

0

Hey ho,

erstmal stimme ich "ohwehohach" zu.

Du hast deine Endlosschleife, die du korrigieren musst.

Einmal zum Boolean von ihm:

bool ungerade = (zahl % 2) == 1;

Das Prozent heißt Modulo. Heißt, dass der Rest das Ergebnis ist. Wenn du durch 2 teilen kannst, bleibt kein Rest über.

Wenn du Zahl ungerade ist, schon.

Was dir sehr helfen mag, sind die Haltepunkte. Ich gehe mal stark davon aus, dass du mit VS programmieren tust. Links von dem Code, neben den Zahlen kannst du Breakpoints setzen, um den Code von dort aus zu verfolgen. Um nach vorn zu navigieren, einfach F10 drücken.

Dann kannst du auch nachvollziehen, was passiert. Siehe Screenshot.

MfG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
 - (Computer, Spiele und Gaming, C (Programmiersprache))
MJH92 
Fragesteller
 10.11.2017, 10:25

Ja ich muss mit VS Enterprise 2017 programmieren. und ich muss halt davon ausgehen das der nutzer immer eine ungerade zahl eingeben wird, quasi komme was da wolle. deshalb würde der bool hier wegfallen.

1