Laden...

Forenbeiträge von Irina Ingesamt 20 Beiträge

05.11.2021 - 11:22 Uhr

Hallo zusammen,

bin immer noch mit dieser Aufgabe beschäftigt....
Die Zeichen werden alle richtig ausgegeben....
Fehlermeldungen erhalte ich keine.....
Irgendwie habe ich eine totale Blockade und weiß nicht weiter. Egal was ich mache, es funktioniert einfach nicht.
Habe es mit einer try-catch-Anweisung versucht, mit einer content-Anweisung, mit einer verschachtelten for-Schleife.....
Ich habe auch in der Dokumentation recherchiert....
Wie bekomme ich die 7 Zeilen vom Byte-Array untereinander??? Hat evtl. jemand ein Code-Beispiel für mich?

Mein Code sieht derzeit so aus:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ESAAufgabe2
{
    class Program
    {
        public void ESA2IN(string pfad, byte[,] array)
        {
            FileStream stream = File.Open(pfad, FileMode.OpenOrCreate);
            for (int i = 0; i < 7; i++)
            {
                for (int j = 0; j < 11; j++)
                {
                    stream.WriteByte(array[i, j]);
                } 
            }
            stream.Close();
        }

        public void ESA2Out(string pfad)
        {
            StreamReader reader = new StreamReader(File.Open(pfad, FileMode.Open));
            int zeichen;
            while ((zeichen = reader.Read()) != -1)
            {
                Console.Write((char)zeichen);
            }
            Console.WriteLine();
            reader.Close();
        }

        static void Main(string[] args)
        {
            Program test = new Program();
            string pfad = @"C:\Users\admin\source\repos\CSH-Lehrgang\CSH03\VS-Projekte\Buch CSH03\ESAAufgabe2\ESA2.txt";
            byte[,] array = {{ 32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 },
{ 32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32 },
{ 67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35 },
{ 67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32 },
{ 67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35 },
{ 32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32 },
{ 32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 } };
            test.ESA2IN(pfad, array);
            test.ESA2Out(pfad);
        }
    }
}

LG Irina

03.11.2021 - 15:00 Uhr

Vielen Dank für die schnellen Rückantworten.....
Diese haben mir sehr geholfen und ich konnte den Code endlich richtig umsetzen....

Wünsche noch einen schönen Tag.

LG Irina

03.11.2021 - 09:58 Uhr

Guten Morgen zusammen,

zur Zeit sitze ich an einer Einsendeaufgabe und bei meiner Konsolenausgabe erhalte ich im Sekundentakt immer den gleichen Wert und die Schleife endet nicht....
Bin gerade absolut überfragt, wo genau mein Fehler liegt....

Der Code besteht aus Aufgaben von mehreren Kapiteln und mit "Neu: ESA_Projekt Aufgabe..." habe ich die Codes aus der Einsendeaufgabe hinzugefügt....

Hier mein geschriebener Code:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO;

namespace ESA_Projekt
{
    delegate void TransponderDel(string kennung, Position pos);

    interface ITransponder
    {
        void Transpond(string kennung, Position pos);
    }

    enum Düsenflugzeugtyp
    {
        A300, A310, A318, A319, A320, A321, A330, A340, A380
    }

    public struct Position
    {
        public int x, y, h;

        public Position(int x, int y, int h)
        {
            this.x = x;
            this.y = y;
            this.h = h;
        }

        public void PositionAendern(int deltaX, int deltaY, int deltaH)
        {
            x = x + deltaX;
            y = y + deltaY;
            h = h + deltaH;
        }

        //public void HoeheAendern(int deltaH)
        //{
        //    h = h + deltaH;
        //}
    }
    abstract class Luftfahrzeug
    {
        protected string kennung;
        public string Kennung
        {
            protected set { kennung = value; }
            get { return kennung; }
        }

        protected Position pos;

        public abstract void Steigen(int meter);
        public abstract void Sinken(int meter);
    }

    class Flugzeug : Luftfahrzeug
    {
        protected Position zielPos;
        protected int streckeProTakt;
        protected int flughoehe;
        protected int steighoeheProTakt;
        protected int sinkhoeheProTakt;
        protected bool steigt = false;
        protected bool sinkt = false;

        public void Starte(Position zielPos, int streckeProTakt, int flughoehe, int steighoeheProTakt, int sinkhoeheProTakt)
        {
            this.zielPos = zielPos;
            this.streckeProTakt = streckeProTakt;
            this.flughoehe = flughoehe;
            this.steighoeheProTakt = steighoeheProTakt;
            this.sinkhoeheProTakt = sinkhoeheProTakt;
            this.steigt = true;
        }

        public Flugzeug(string kennung, Position startPos)
        {
            this.kennung = kennung;
            this.pos = startPos;
        }

        public override void Steigen(int meter)
        {
            //pos.HoeheAendern(meter);
            pos.PositionAendern(0, 0, meter);
            Console.WriteLine(kennung + " steigt " + meter + " Meter, neue Höhe=" + pos.h);
        }
        public override void Sinken(int meter)
        {
            //pos.HoeheAendern(-meter);
            pos.PositionAendern(0, 0, -meter);
            Console.WriteLine(kennung + " sinkt " + meter + " Meter, neue Höhe=" + pos.h);
        }
    }

    class Starrflügelflugzeug : Flugzeug, ITransponder
    {
        public Starrflügelflugzeug(string kennung, Position startPos) : base(kennung, startPos)
        {
            //Program.transponder += new TransponderDel(Transpond);
            //Program.transponder += Transpond;
        }

        //Neu: ESA_Projekt Aufgabe 3
        protected BinaryWriter writer;
        protected string protokoll;
        public string Protokoll
        {
            get { return protokoll; }
        }

        public void Transpond(string kennung, Position pos)
        {
            //if (kennung.Equals(this.kennung))
            //    Console.WriteLine("{0} an Position x={1}, y={2}", kennung, pos.x, pos.y);

            DateTime timestamp = DateTime.Now;
            if (kennung.Equals(this.kennung))
            {
                Console.Write("{0}:{1}", timestamp.Minute, timestamp.Second);
                Console.Write("\t{0}-Position: {1}-{2}-{3}", this.kennung, base.pos.x, base.pos.y, base.pos.h);
                Console.Write("Zieldistanz: {0} m\n", Zieldistanz());

                //Neu: ESA_Projekt Aufgabe 3
                if (Program.protokollieren && writer != null)
                {
                    writer.Write(pos.x);
                    writer.Write(pos.y);
                    writer.Write(pos.h);
                }
            }
            else
            {
                double abstand = Math.Sqrt(Math.Pow(this.pos.x - pos.x, 2) + Math.Pow(this.pos.y - pos.y, 2));
                Console.Write("\t{0} ist {1} m von {2} entfernt.\n", this.kennung, (int)abstand, kennung);

                if (Math.Abs(this.pos.h - pos.h) < 100 && abstand < 500)
                    Console.WriteLine("\tWARNUNG: {0} hat nur {1} m Höhenabstand!", kennung, Math.Abs(this.pos.h - pos.h));
            }
        }

        double a, b, alpha, a1, b1;
        bool gelandet = false;

        private bool SinkenEinleiten()
        {
            double strecke = Math.Sqrt(Math.Pow(streckeProTakt, 2) - Math.Pow(sinkhoeheProTakt, 2));
            int sinkstrecke = (int)(strecke * (pos.h - zielPos.h) / sinkhoeheProTakt);
            int zieldistanz = Zieldistanz();

            if (sinkstrecke >= zieldistanz)
            {
                //Console.WriteLine("{0} Sinkstrecke {1} >= Zieldistanz {2}", kennung, sinkstrecke, zieldistanz);
                return true;
            }
            else
                return false;
        }

        private void PositionBerechnen(double strecke, int steighoeheProTakt)
        {
            a = zielPos.x - pos.x;
            b = zielPos.y - pos.y;
            alpha = Math.Atan2(b, a);
            a1 = Math.Cos(alpha) * strecke;
            b1 = Math.Sin(alpha) * strecke;
            pos.PositionAendern((int)a1, (int)b1, steighoeheProTakt);
        }

        private int Zieldistanz()
        {
            return (int)Math.Sqrt(Math.Pow(zielPos.x - pos.x, 2) + Math.Pow(zielPos.y - pos.y, 2));
        }

        public void Steuern()
        {
            if (steigt)
            {
                if (this.SinkenEinleiten())
                {
                    steigt = false;
                    sinkt = true;
                }
                else if (pos.h > flughoehe)
                {
                    steigt = false;
                }
            }
            else if (sinkt)
            {
                if (pos.h <= zielPos.h + steighoeheProTakt)
                    gelandet = true;
            }
            else
            {
                if (this.SinkenEinleiten())
                {
                    sinkt = true;
                }
            }
            if (!gelandet)
            {
                Program.transponder(kennung, pos);
                if (steigt)
                {
                    double strecke = Math.Sqrt(Math.Pow(streckeProTakt, 2) - Math.Pow(steighoeheProTakt, 2));
                    this.PositionBerechnen(strecke, steighoeheProTakt);
                }
                else if (sinkt)
                {
                    double strecke = Math.Sqrt(Math.Pow(streckeProTakt, 2) - Math.Pow(sinkhoeheProTakt, 2));
                    this.PositionBerechnen(strecke, -sinkhoeheProTakt);
                }
                else
                {
                    this.PositionBerechnen(streckeProTakt, 0);
                }
            }
            else
            {
                Program.fliegerRegister -= this.Steuern;
                Program.transponder -= this.Transpond;
                Console.WriteLine("\n{0} gelandet (Zieldistanz={1}, Höhendistanz={2})", kennung, Zieldistanz(), pos.h - zielPos.h);

                if (Program.protokollieren && writer != null)
                {
                    writer.Write(pos.x);
                    writer.Write(pos.y);
                    writer.Write(pos.h);
                    writer.Close();
                }
            }
        }
    }

    class Düsenflugzeug : Starrflügelflugzeug
    {
        protected Düsenflugzeugtyp typ;

        protected int sitzplaetze;
        private int fluggaeste;
        public int Fluggaeste
        {
            set
            {
                if (sitzplaetze < (fluggaeste + value))
                    Console.WriteLine("Keine Buchung: Die " + "Fluggastzahl würde mit der Zubuchung " + "von {0} Plätzen die verfügbaren Plätze " + " von {1} um {2} übersteigen!", value, sitzplaetze, value + fluggaeste - sitzplaetze);
                else
                    fluggaeste += value;
            }
            get { return fluggaeste; }
        }
        public Düsenflugzeug(string kennung, Position startPos) : base(kennung, startPos) { }
        
        public void Starte()
        {
            Console.WriteLine("Flieger \"{0}\", Typ {1} ({2} Sitzplätze) startet", Kennung, typ, sitzplaetze);
            steigt = true;
            Program.transponder += this.Transpond;
            Program.fliegerRegister += this.Steuern;
        }

        //Neu: ESA_Projekt Aufgabe 3
        public void Flugschreiber()
        {
            if (Program.protokollieren)
            {
                DateTime timestamp = DateTime.Now;
                string pfad = kennung + "_" + timestamp.Day + "-" + timestamp.Hour + "-" + timestamp.Minute + "-" + timestamp.Second + ".bin";
                protokoll = pfad;

                writer = new BinaryWriter(File.Open(pfad, FileMode.Create));
                string header = "Flug \"" + kennung + "\" (Typ " + this.typ + ") startet an Position " + pos.x + "-" + pos.y + "-" + pos.h + " mit Zielposition " + zielPos.x + "-" + zielPos.y + "-" + zielPos.h;
                writer.Write(header);
            }
        }

        public void Buchen(int plätze)
        {
            Fluggaeste += plätze;
        }

        //public bool Starte()
        //{
        //    string pfad = @".\" + kennung + ".init";
        //    StreamReader reader;
        //    try
        //    {
        //        reader = new StreamReader(File.Open(pfad, FileMode.Open));
        //    }
        //    catch (IOException e)
        //    {
        //        Console.WriteLine("{0} Fehler beim Zugriff auf die Datei " + pfad, e.GetType().Name);
        //        return false;
        //    }
        //    int[] data = new int[9];
        //    for (int i = 0; i < 9; i++)
        //    {
        //        string str = reader.ReadLine();
        //        str = str.Substring(str.IndexOf('=') + 1);
        //        //Console.WriteLine(str);
        //        data[i] = Int32.Parse(str);
        //    }
        //    reader.Close();
        //    this.zielPos.x = data[0];
        //    this.zielPos.y = data[1];
        //    this.zielPos.h = data[2];
        //    streckeProTakt = data[3];
        //    flughoehe = data[4];
        //    steighoeheProTakt = data[5];
        //    sinkhoeheProTakt = data[6];
        //    //"typ" aus data[7] initialisieren
        //    Array typen = Enum.GetValues(typeof(Düsenflugzeugtyp));
        //    this.typ = (Düsenflugzeugtyp)typen.GetValue(data[7]);
        //    sitzplaetze = data[8];
        //    Console.WriteLine("Flug {0} vom Typ {1} mit {2} Plätzen initialisiert.", kennung, typ, sitzplaetze);
        //    steigt = true;
        //    Console.WriteLine();
        //    return true;
        //}
    }

    class Program
    {
        public static TransponderDel transponder;

        public delegate void FliegerRegisterDel();
        public static FliegerRegisterDel fliegerRegister;


        //Neu: ESA_Projekt Aufgabe 3
        public static bool protokollieren = true;

        public void ProgrammTakten()
        {
            Düsenflugzeug flieger1 = new Düsenflugzeug("LH 500", new Position(3500, 1500, 180));
            Düsenflugzeug flieger2 = new Düsenflugzeug("LH 3000", new Position(3000, 2000, 100));

            flieger1.Starte();
            flieger2.Starte();

            while (fliegerRegister != null)
            {
                fliegerRegister();
                Console.WriteLine();
                Thread.Sleep(1000);
            }
        }

        //Neu: ESA_Projekt Aufgabe 4
        public void ProtokollAusgeben(string protokoll)
        {
            BinaryReader reader = new BinaryReader(File.Open(protokoll, FileMode.Open));
            Console.WriteLine(reader.ReadString());
            bool goOn = true;
            while (goOn)
            {
                try
                {
                    for (int i = 0; i < 3; i++)
                        Console.Write("\t{0}", reader.ReadInt32());
                }
                catch
                {
                    goOn = false;
                }
                reader.Close();
                Console.WriteLine();
            }
        }

        static void Main(string[] args)
        {
            Program test = new Program();
            test.ProgrammTakten();
        }
    }
}

Ich würde mich freuen, wenn jemand meinen Fehler erkennt und mir helfen kann... 🙂

LG Irina

27.10.2021 - 10:16 Uhr

Habe den Code etwas umgeschrieben.....
Da scheint aber noch etwas falsch zu sein....
Ich erhalte keine Fehlermeldung, aber bei der Konsolenausgabe habe ich nur ein schwarzes Bild....
Habe ein zweidimensionales Array erstellt byte[,] array = new byte[7, 11];, aber irgendwo steckt immer noch ein Denkfehler von mir....


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ESAAufgabe2
{
    class Program
    {
        public void ESA2IN(string pfad, byte[] array)
        {
            FileStream stream = File.Open(pfad, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write);
            stream.Write(array, 0, array.Length);
            stream.Close();
        }

        public void ESA2Out(string pfad)
        {
            FileStream stream = File.Open(pfad, FileMode.Open, FileAccess.Read, FileShare.Read);
            byte[,] array = new byte[7, 11];

            for (int i = 0; i < array.Length;)
            {
                Console.Write((char) i);
            }
            Console.WriteLine();
            stream.Close();
        }

        static void Main(string[] args)
        {
            Program test = new Program();
            string pfad = @"C:\Users\admin\source\repos\CSH-Lehrgang\CSH03\VS-Projekte\Buch CSH03\ESAAufgabe2\ESA2IN.txt";
            byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
            test.ESA2IN(pfad, array);
            test.ESA2Out(pfad);
        }
    }
}

LG Irina

27.10.2021 - 08:44 Uhr

Guten Morgen zusammen,

nochmal zu meinem Byte-Array...
Soweit klappt jetzt alles super, es gibt keine Fehlermeldungen mehr.....
Die Konsolenausgabe und das Schreiben in die Datei mit den entsprechenden Zeichen funktioniert auch....
Der Code wird mir aber nur in einer Reihe angezeigt, anstatt mit einer Splittung in 7 Reihen....
Irgendwo ist also ein kleiner Denkfehler....

Hier mein geschriebener Code:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ESAAufgabe2
{
    class Program
    {
        public void ESA2IN(string pfad, byte[] array)
        {
            FileStream stream = File.Open(pfad, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write);
            stream.Write(array, 0, array.Length);
            stream.Close();
        }

        public void ESA2Out(string pfad)
        {
            FileStream stream = File.Open(pfad, FileMode.Open, FileAccess.Read, FileShare.Read);
            byte[] array = new byte[stream.Length];
            stream.Read(array, 0, (int)stream.Length);

            for (int i = 0; i < array.Length; i++)
            {
                Console.Write((char)array[i]);
            }
            Console.WriteLine();
            stream.Close();
        }

        static void Main(string[] args)
        {
            Program test = new Program();
            string pfad = @"C:\Users\admin\source\repos\CSH-Lehrgang\CSH03\VS-Projekte\Buch CSH03\ESAAufgabe2\ESA2IN.txt";
            byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
            test.ESA2IN(pfad, array);
            test.ESA2Out(pfad);
        }
    }
}

Ich hoffe, das ihr mir weiterhelfen könnt...

LG Irina

26.10.2021 - 10:45 Uhr

Ich habe dies jetzt so gestaltet....
Die Datei ESA2IN habe ich in dem Projekt ESAAufgabe2 erstellt, diesen Pfad kopiert und in die Aufgabe eingefügt....
Die unbehandelte Ausnahme konnte ich damit beheben....juhu...
Der Code wird mir nur noch nicht richtig angezeigt.....dieser steht noch in einer Reihe.....soll aber untereinander stehen...da muss ich noch ein bisschen tüffteln.

Sieht zur Zeit so aus....
CC # # C C # # C #####C # # C ##### C C # # CC # #

Soll am Ende aber so aussehen....
CC # #
C C # #
C #####
C # #
C #####
C C # #
CC # #

Das bekomme ich hin....

Vielen Dank für eure Hinweise.....

LG Irina

26.10.2021 - 10:06 Uhr

Ok, das heisst, in den Übungen war es ok, diese Dateien in diesem Verzeichnis zu speichern....da hatte ja alles funktioniert....

Und wenn ich das jetzt richtig verstehe, dann sollte die Datei im Debug oder Release Ordner angelegt werden...und somit würde dann die Meldung verschwinden...

LG Irina

26.10.2021 - 10:01 Uhr

Auch mit FileAccess.Write und FileShare.Write kommt die gleiche Meldung.
Mit der Dokumentation habe ich immer und immer wieder alles mögliche probiert, aber die Fehlermeldung verschwindet einfach nicht....

LG Irina

26.10.2021 - 09:54 Uhr

Hallo zusammen,

ich habe ein Screenshot mit der Fehlermeldung angehangen....

LG Irina

26.10.2021 - 08:51 Uhr

Hallo zusammen,

in meiner aktuellen Aufgabe soll ein Array aus einer Datei ausgelesen werden und auf der Konsole ausgegeben werden.
Egal, wie oft ich den Code verändere (ca. 50 mal bis jetzt), ich habe immer in Zeile 14 eine unbehandelte Ausnahme.
Letztendlich weiß ich einfach nicht, wo dabei mein Fehler liegt.

Hier mein Code:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace ESAAufgabe2
{
    class Program
    {
        public void ESA2IN(string pfad, byte[] array)
        {
            FileStream stream = File.Open(pfad, FileMode.OpenOrCreate);
            stream.Write(array, 0, array.Length);
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write((char)array[i]);
            }
            Console.WriteLine();
            stream.Close();
        }

        public void ESA2Out(string pfad)
        {
            StreamReader reader = new StreamReader(File.Open(pfad, FileMode.Open));
            int i;
            while ((i = reader.Read()) != -1)
            {
                Console.WriteLine("{0}", i);
            }
            Console.WriteLine();
            reader.Close();
        }

        static void Main(string[] args)
        {
            Program test = new Program();
            string pfad = @"C:\Users\admin\OneDrive\Dokumente\ILS\Einsendeaufgabe 19 CSH03B\ESA2.txt";
            byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };
            test.ESA2IN(pfad, array);
            test.ESA2Out(pfad);
        }
    }
}

Ich hoffe, das ihr mir helfen könnt....
Vielen Dank

LG Irina

30.09.2021 - 13:49 Uhr

Hallo,

vielen Dank, es funktioniert jetzt einwandfrei.

LG Irina

30.09.2021 - 11:23 Uhr

Hallo zusammen,

ich habe eine Aufgabe zu knacken, wobei es um die Ulam'sche Vermutung geht. Die Aufgabe lautet:

Wenn Sie mit einer Zahl "zahl > 0" beginnen und diese Zahl wiederholt halbieren – sofern sie gerade ist –, oder aber mit 3 multiplizieren und 1 addieren – sofern sie ungerade ist –, dann landen Sie (dies ist bislang nicht allgemein gültig bewiesen) irgendwann bei der Zahl 1.

Planen Sie eine Methode UlamVermutung. Die Methode soll zunächst die Zahl, mit der sie aufgerufen wurde, ausgeben und sodann in jedem Berechnungsschritt den aktuellen Wert der Variablen "zahl" ausgeben. Die Berechnung endet, wenn zahl den Wert 1 erreicht hat. Hinweis: Sie werden eine Schleife benötigen.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ESAAufgabe4
{
    class UlamVermutung
    {
        public int Ulam(int zahl)
        {
            Console.WriteLine("Ulamsche Berechnung:" + zahl);

            while (zahl != 1)
            {
                if(zahl % 2 == 0)
                {
                    zahl = zahl / 2;
                    Console.WriteLine("Ergebnis:" + zahl);
                }
                else if(zahl % 2 != 0)
                {
                    zahl = zahl * (3 + 1);
                    Console.WriteLine("Ergebnis:" + zahl);
                }
            }
            return zahl;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            UlamVermutung ula = new UlamVermutung();
            ula.Ulam(3);
        }
    }
}

Der Code an sich ist Fehlerfrei geschrieben. Wenn ich in der Main Methode unter "ula.Ulam" die Zahlen 1 oder 2 eingebe erhalte ich ein Ergebnis. Bei anderen Zahlen erhalte ich eine Endlosschleife.

Hat jemand eine Idee, wo mein Fehler liegt?

LG Irina

21.09.2021 - 08:39 Uhr

Guten Morgen zusammen,

erstmal vielen Dank für die zahlreichen Informationen und die tolle Hilfe.
Lt. Aufgbe sollten Rechteck und Quadrat von Figur erben, deshalb gab es keine Kirsche auf das Sahnehäubchen.
Rechteck und Quadrat sollten zudem jeweils eine Konstruktormethode erhalten.
Ich habe eine mögliche Lösung gefunden und für die gesamte Einsendeaufgabe habe ich die Note 1 erhalten 🙂


public class Program
    {
        static void Main(string[] args)
        {
            Rechteck a = new Rechteck(10, 5);
            Quadrat b = new Quadrat(5);

            a.Umfang();
            a.Flaeche();

            b.Umfang();
            b.Flaeche();
        }
    }

    public abstract class Figur
    {
        public int breite;
        public int hoehe;

        public Figur() { }

        public Figur(int breite, int hoehe)
        {
            this.breite = breite;
            this.hoehe = hoehe;
        }

        public abstract void Umfang();
        public abstract void Flaeche();
    }

    class Rechteck : Figur
    {
        public Rechteck(int breite, int hoehe) : base(breite, hoehe) { }

        public override void Umfang()
        {
            Console.WriteLine("Umfang des Rechtecks: " + 2 * (breite + hoehe));
        }

        public override void Flaeche()
        {
            Console.WriteLine("Fläche des Rechtecks: " + breite * hoehe);
        }
    }

    class Quadrat : Figur
    {
        public Quadrat(int breite) : base(breite, breite) { }

        public override void Umfang()
        {
            Console.WriteLine("Umfang des Quadrats: " + 4 * breite);
        }

        public override void Flaeche()
        {
            Console.WriteLine("Fläche des Quadrats: " + breite * breite);
        }
    }
}

LG Irina

17.09.2021 - 17:10 Uhr

Die Konsolenausgabe funktioniert nicht, sie ist komplett rot unterkringelt....
Auch oben in der Klasse Program ist das new Quadrat rot unterkringelt....

17.09.2021 - 17:08 Uhr

Versuche gerade die Kirsche auf das Sahnehäubchen zu bekommen, aber hier erhalte ich einige Fehlermeldungen...


public class Program
    {
        static void Main(string[] args)
        {
            Rechteck a = new Rechteck(10, 5);
            Quadrat b = new Quadrat(5);

            a.Umfang();
            a.Flaeche();

            b.Umfang();
            b.Flaeche();
        }
    }

    public abstract class Figur
    {
        public int Breite;
        public int Hoehe;

        public Figur() { }

        public Figur(int breite, int hoehe)
        {
            this.Breite = breite;
            this.Hoehe = hoehe;
        }

        public abstract void Umfang();
        public abstract void Flaeche();
    }

    public class Rechteck : Figur
    {
        public Rechteck(int breite, int hoehe) : base(breite, hoehe) { }

        public override void Umfang()
        {
            Console.WriteLine("Umfang des Rechtecks: " + 2 * (this.Breite + this.Hoehe));
        }

        public override void Flaeche()
        {
            Console.WriteLine("Fläche des Rechtecks: " + this.Breite * this.Hoehe);
        }
    }

    public class Quadrat : Rechteck
    {
        public Quadrat(int breite, int hoehe) : base(breite, hoehe) { }
        {
            Console.WriteLine("Umfang des Quadrats: " + 4 * this.Breite);
            Console.WriteLine("Fläche des Quadrats: " + this.Breite* this.Breite);
        }
    }
}

Das Quadrat erbt noch nicht von der Klasse Rechteck.....

17.09.2021 - 12:51 Uhr

Hallo zusammen,

habe den Code aufgrund eurer Informationen geändert und einiges hinzugefügt und es funktioniert endliche.
Vielen Dank für eure Hilfe.

Der Code sieht jetzt so aus:


public class Program
    {
        static void Main(string[] args)
        {
            Rechteck a = new Rechteck(10, 5);
            Quadrat b = new Quadrat(5);

            a.Umfang();
            a.Flaeche();

            b.Umfang();
            b.Flaeche();
        }
    }

    public abstract class Figur
    {
        public int Breite;
        public int Hoehe;

        public Figur() { }

        public Figur(int breite, int hoehe)
        {
            this.Breite = breite;
            this.Hoehe = hoehe;
        }

        public abstract void Umfang();
        public abstract void Flaeche();
    }

    public class Rechteck : Figur
    {
        public Rechteck(int breite, int hoehe) : base(breite, hoehe) { }

        public override void Umfang()
        {
            Console.WriteLine("Umfang des Rechtecks: " + 2 * (this.Breite + this.Hoehe));
        }

        public override void Flaeche()
        {
            Console.WriteLine("Fläche des Rechtecks: " + this.Breite * this.Hoehe);
        }
    }

    public class Quadrat : Figur
    {
        public Quadrat(int laenge) : base(laenge, laenge) { }

        public override void Umfang()
        {
            Console.WriteLine("Umfang des Quadrats: " + 4 * this.Breite);
        }

        public override void Flaeche()
        {
            Console.WriteLine("Fläche des Quadrats: " + this.Breite * this.Breite);
        }
    }
}

Das war jetzt auch Sinn und Zweck der Aufgabe.

Mit den englischen Wörtern kenne ich aus der VBA/SQL Programmierung und wurde hier bei dem Thema C# noch nicht erwähnt.
Allerdings ist es erst das erste Buch zu diesem Thema und es folgen noch 4 weitere Bücher.

LG Irina

17.09.2021 - 11:18 Uhr

Test, Test, Test, Test


abstract class Figur
    {
        public int breite, hoehe;
        public Figur() { }
        public Figur(int breite, int hoehe)
        {
            this.breite = breite;
            this.hoehe = hoehe;
        }
        public abstract void Umfang(int cm);
        public abstract void Fläche(int cm);

        static void Main(string[] args)
        {

        }
    }
    class Rechteck : Figur
    {
        public Rechteck() { }
        public override void Umfang(int cm)
        {
            int breite = 6;
            int hoehe = 4;
            Console.WriteLine("Umfang des Rechtecks: " + 2 * (breite + hoehe) + cm);
        }
        public override void Fläche(int cm)
        {
            int breite = 10;
            int hoehe = 6;
            Console.WriteLine("Fläche des Rechtecks: " + breite * hoehe + cm);
        }
    }
    class Quadrat : Rechteck
    {
        public Quadrat() { }
        public override void Umfang(int cm)
        {
            int breite = 22;
            Console.WriteLine("Umfang des Quadrats: " + 4 * breite + cm);
        }
        public override void Fläche(int cm)
        {
            int breite = 45;
            Console.WriteLine("Fläche des Quadrats: " + breite * breite + cm);
        }
    }
    class Program
    {
           static void Main(string[] args)
    }
}    

Nochmal der vollständige Code in richtiger Formation.....

17.09.2021 - 11:13 Uhr

abstract class Figur
{
public int breite, hoehe;
public Figur() { }
public Figur(int breite, int hoehe)
{
this.breite = breite;
this.hoehe = hoehe;
}
public abstract void Umfang(int cm);
public abstract void Fläche(int cm);
}
class Rechteck : Figur
{
public Rechteck() { }
public override void Umfang(int cm)
{
int breite = 6;
int hoehe = 4;
Console.WriteLine("Umfang des Rechtecks: " + 2 * (breite + hoehe) + cm);
}
public override void Fläche(int cm)
{
int breite = 10;
int hoehe = 6;
Console.WriteLine("Fläche des Rechtecks: " + breite * hoehe + cm);
}
}
class Quadrat : Rechteck
{
public Quadrat() { }
public override void Umfang(int cm)
{
int breite = 22;
Console.WriteLine("Umfang des Quadrats: " + 4 * breite + cm);
}
public override void Fläche(int cm)
{
int breite = 45;
Console.WriteLine("Fläche des Quadrats: " + breite * breite + cm);
}
}
class Program
{
static void Main(string[] args)
{
}
}
} 

17.09.2021 - 10:14 Uhr

Hallo,

ok, ich habe dies unten unter der Klasse Program angehangen. Ist das so in Ordnung oder kann ich die Main Methode auch in der Klasse Rechteck einfügen?
Wie bzw. was definiere ich jetzt in der Main Methode?
Ist in diesem Fall

Rechteck rechteck = new Rechteck();
Quadrat quadrat = new Quadrat();

richtig?
Habe das gerade probiert, die Konsole lässt sich problemlos starten, aber es sind keine Werte vorhanden.
Muss ich die Berechnung in die Main Methode einfügen und aus Console.WriteLine entfernen?

abstract class Figur   
{  
    public int breite, hoehe;  
    public Figur() { }  
    public Figur(int breite, int hoehe)  
    {  
        this.breite = breite;  
        this.hoehe = hoehe;  
    }  
    public abstract void Umfang(int cm);  
    public abstract void Fläche(int cm);  
}  
class Rechteck : Figur  
{  
    public Rechteck() { }  
    public override void Umfang(int cm)  
    {  
        int breite = 6;  
        int hoehe = 4;  
        Console.WriteLine(&quot;Umfang des Rechtecks: &quot; + 2 * (breite + hoehe) + cm);  
    }  
    public override void Fläche(int cm)  
    {  
        int breite = 10;  
        int hoehe = 6;  
        Console.WriteLine(&quot;Fläche des Rechtecks: &quot; + breite * hoehe + cm);  
    }  
}  
class Quadrat : Rechteck  
{  
    public Quadrat() { }  
    public override void Umfang(int cm)  
    {  
        int breite = 22;  
        Console.WriteLine(&quot;Umfang des Quadrats: &quot; + 4 * breite + cm);  
    }  
    public override void Fläche(int cm)  
    {  
        int breite = 45;  
        Console.WriteLine(&quot;Fläche des Quadrats: &quot; + breite * breite + cm);  
    }  
}  
class Program  
{  
    static void Main(string[] args)  
    {  
    }  
}  

}

17.09.2021 - 09:01 Uhr

Hallo zusammen,

bin gerade mit einer Aufgabe beschäftigt, wo ich gerade nicht weiter weiß. 😭
In der Aufgabe geht es darum, das eine abstrakte Klasse mit dem Namen Figur erstellt werden soll, gefolgt von den Unterklassen Rechteck und Quadrat.
Die abstrakte Basisklasse Figur soll zwei abstrakte Methoden Umfang und Fläche deklarieren. Die Methoden geben nichts zurück, da sie lediglich eine Konsolenausgabe bewirken soll. Von der Klasse Figur erben zwei Klassen Rechteck und Quadrat. Die Berechnungsergebnisse sollen auf der Konsole ausgegeben werden.
Bis jetzt sieht mein geschriebener Code gut aus, bis auf die Meldung, das als Einstiegspunkt keine statische Main Methode vorhanden ist. Irgendwie stehe ich gerade vor einer Wand. Vielleicht hat jemand eine Idee wo mein Denkfehler ist. 🙂


abstract class Figur
    {
        public int breite, hoehe;
        public Figur() { }
        public Figur(int breite, int hoehe)
        {
            this.breite = breite;
            this.hoehe = hoehe;
        }
        public abstract void Umfang(int cm);
        public abstract void Fläche(int cm);

        static void Main(string[] args)
        {
            
        }
    }
    class Rechteck : Figur
    {
        public Rechteck() { }
        public override void Umfang(int cm)
        {
            int breite = 6;
            int hoehe = 4;
            Console.WriteLine("Umfang des Rechtecks: " + 2 * (breite + hoehe) + cm);
        }
        public override void Fläche(int cm)
        {
            int breite = 10;
            int hoehe = 6;
            Console.WriteLine("Fläche des Rechtecks: " + breite * hoehe + cm);
        }
    }
    class Quadrat : Rechteck
    {
        public Quadrat() { }
        public override void Umfang(int cm)
        {
            int breite = 22;
            Console.WriteLine("Umfang des Quadrats: " + 4 * breite + cm);
        }
        public override void Fläche(int cm)
        {
            int breite = 45;
            Console.WriteLine("Fläche des Quadrats: " + breite * breite + cm);
        }
    }
}
 

LG Irina