C# Komische Ausgabe bei zu hohen Eingaben

henry_p

Cadet 2nd Year
Registriert
Juni 2008
Beiträge
20
Hallo!
Ich habe ein sehr einfaches Konsolenprogramm geschrieben, welches eine Breite und eine Höhe abfragt, und danach mit diesen Werten ein Rechteck "zeichnet".
Das klappt auch prima, solange man nicht zu hohe Werte eingibt.
Ein 30x15 Rechteck klappt auch wunderbar:
siehe anhang "normal.jpg"

Doch wenn man etwa Werte wie 200x100 eingibt, kommt so etwas heraus:
siehe anhang "komisch.jpg"

Woran könnte das liegen und wie kann ich es ändern?

LG,
henry_p

----------|--------------------|
----------|--------------------|
------komisch.jpg-----normal.jpg
 

Anhänge

  • komisch.jpg
    komisch.jpg
    16,6 KB · Aufrufe: 250
  • normal.jpg
    normal.jpg
    16,5 KB · Aufrufe: 255
Zuletzt bearbeitet:
Kann das nicht am ZEilenumbruch liegen?
Das liegt ja wahrscheinlich in einer Schleife, die dann Leerzeichen und Absätze hinzufügt, von daher biste einfach irgendwann darüber hinaus und er springt in die nächste Zeile.
Kannst ja mal den Code posten...
Ansonsten einfach mit ner Abfrage die Größe beschränken.
 
Wenn das der selbe Adlirhytmus ist und du die Werte die du eingbist dagenauso verarbeitest wird das wohl an der Auflösung der Konsole liegen.


Poste doch deinen Kot ähm Code.
 
hier der code:

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            aufruf a = new aufruf();
            a.Programm();
        }

        //Anweisung zum Starten des Programms, könnte auch in Main stehen.
        class aufruf
        {
            public void Programm()
            {
                Console.WriteLine("Bitte Breite eingeben!");
                int B = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("Bitte Hoehe eingeben!");
                int H = Convert.ToInt32(Console.ReadLine());
                Rechteck r = new Rechteck(B, H);
                r.zeichne();
                Console.ReadLine();
            }
        }

        //Enthält die wesentlichen Bestandteile des Programms "Rechteck"
        class Rechteck
        {
            private int iBreite;
            private int iHoehe;

            private void leer()
        {
            iBreite = 0;
            iHoehe = 0;
        }

            //Konstruktoren
            public Rechteck()
            {
                leer();
            } 

            public Rechteck(int iB, int iH)
            {
                leer();

                if (iB >= 0)
                {
                    iBreite = iB;
                }
                if (iH >= 0)
                {
                    iHoehe = iH;
                }
            }

            public Rechteck(int iQuadrat)
            {
                leer();

                if (iQuadrat >= 0)
                {
                    iBreite = iQuadrat;
                    iHoehe = iQuadrat;
                }
            }

            // Properties
            public int Breite
            {
                get
                {
                    return iBreite;
                }
                set
                {
                    if (value > 0)
                    {
                        iBreite = value;
                    }
                }
            }

            public int Hoehe
            {
                get
                {
                    return iHoehe;
                }
                set
                {
                    if (value > 0)
                    {
                        iHoehe = value;
                    }
                }

            }
            
            // Rechteck zeichnen
            public void zeichne()
            {
                Console.Write("+");
                for (int i = 0; i < iBreite; i++)
                {
                    Console.Write("-");
                }
                Console.Write("+\n");

                for (int j = 0; j < iHoehe; j++)
                {
                    Console.Write("|");

                    for (int i = 0; i < iBreite; i++)
                    {
                        Console.Write(" ");
                    }

                    Console.Write("|\n");
                }

                Console.Write("+");

                for (int i = 0; i < iBreite; i++)
                {
                    Console.Write("-");
                }

                Console.Write("+\n");
            }           
        }
    }
}

da sind son paar sachen drin, die ich ausprobiere, also vielleicht etwas komisch^^
 
Der Code an sich sollte so funktionieren, das einzige Problem das ich sehe ist die Tatsache das du in der Console nur eine bestimmte Anzahl an Zeichen eingeben kannst bis automatisch umgebrochen wird.
 
achso, danke!
kann man dass denn irgendwie umgehen? sodass man zum beispiel die breite des ganzen bildschirms zur verfügung hat? oder gibt es vielleicht die möglichkeit einer horizontalen scroll-leiste?
 
Wenn du das ganze in einer Text-Datei speicherst?
Oder siehe Anhang.
 

Anhänge

  • untitled.PNG
    untitled.PNG
    17,1 KB · Aufrufe: 201

Ähnliche Themen

Zurück
Oben