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.?
Hallo Zusammen,
ich habe ein ansatzweises Programm fertigstellen können es funktioniert aber nicht ganz so wie ich es haben wollte (Ich bin noch Anfänger in Programmiersprachen) unten hänge ich mal das Programm an. Ich habe dabei mehrere Probleme zum einen will ich eine Nutzerabfrage einbauen (Konsolen Applikation) wo der Nutzer eine ungerade Zahl eingeben soll wo durch jeweils eine unterschiedliche Raute ausgegeben werden soll.
Und zum Anderen will ich noch herausfinden wie ich es hinbekomme das die Angezeigete Raute einerseits innen leer ist und andererseits das Programm nicht endlos Zeilen ausspuckt die ich in meinem Programm nicht brauchen kann.
Hier nun noch das was ich versuchsweise bisher geschrieben habe (Es handelt sich dabei um die Aufarbeitung einer Klassenarbeit aus JAVA die ich nun in C# eingenhändig schreiben soll):
namespace Klassenarbeit_Aufgabe_2 { public class Program { public static void Main(string[] args) { Console.WriteLine("Bitte geben Sie eine ungerade Zahl ein: "); string Zahl = Console.ReadLine();
int LeerzeichenG, LeerzeichenRL, BREITE = 9;
for (int x = 1; x <= BREITE; x = x + 2)
{
LeerzeichenG = BREITE - x;
LeerzeichenRL = LeerzeichenG / 2;
for (int lz = 0; lz < LeerzeichenRL; lz++)
{
Console.Write(" ");
}
for (int xse = 0; xse < x; xse++)
{
Console.Write("*");
}
for (int lz = 0; lz < LeerzeichenRL; lz++)
{
Console.Write(" ");
}
Console.Write("\n");
}
for (int x = 9; x <= BREITE; x = x - 2)
{
LeerzeichenG = BREITE - x;
LeerzeichenRL = LeerzeichenG / 2;
for (int lz = 0; lz < LeerzeichenRL; lz++)
{
Console.Write(" ");
}
for (int xse = 0; xse < x; xse++)
{
Console.Write("*");
}
for (int lz = 0; lz < LeerzeichenRL; lz++)
{
Console.Write(" ");
}
Console.Write("\n");
}
Console.ReadLine();
}
}
}
Für jegwede Hilfe oder Anregung wäre ich schon dankbar.
Mit freundlichen Grüßen
MJH92
3 Antworten

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


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;

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.

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


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.