Zum Inhalt springen

[C#] Rechenoptionen in eine Textdatei schreiben


Nadine19

Empfohlene Beiträge

Hallo,

bin neu hier ^^!

Ich heiße Nadine und befinde mich zur Zeit im 1.Ausbildungsjahr zur Fachinformatikerin.

Ich bin noch blutige Anfängerin in C#, da ich vorher nur mit Visual Basic programmiert habe.

Ich sollte einen Taschenrechner programmieren, was ich auch soweit hin bekommen habe.

Nun soll ich die Rechenoperation in eine Textdatei schreiben, sprich:

12 - 3 = 9

9 + 2 = 11

11 * 5 = 55

55 / 10 = 5,5

usw.

Ich habe die Variablen wert1, wert2 und ergebnis.

Wie schreibe ich sie in eine Textdatei?

Ich freue mich sehr über eure Antworten :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für deine Antwort, aber ich werde leider nicht draus schlau ^^" Ich hab noch nicht mit Klassen gearbeitet.

Hier mein Code, falls es dann verständlicher ist:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;


namespace WindowsApplication3

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        double wert1 = 0;

        double wert2 = 0;

        double ergebnis = 0;

        double zahl1 = 1;

        double zahl2 = 2;

        double zahl3 = 3;

        double zahl4 = 4;

        double zahl5 = 5;

        double zahl6 = 6;

        double zahl7 = 7;

        double zahl8 = 8;

        double zahl9 = 9;

        double zahl0 = 0;

        bool plus = false;

        bool minus = false;

        bool mal = false;

        bool geteilt = false;

        bool geklickt = false;

        bool komma = false;



        private void button14_Click(object sender, EventArgs e)

        {


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }



            if (textBox1.Text.StartsWith("0"))

            {

                textBox1.Text = "0";

            }

            else

            {

                textBox1.Text += zahl0.ToString();

            }




        }


        private void button5_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }



            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl1.ToString();


        }


        private void button6_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl2.ToString();

        }


        private void button7_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl3.ToString();

        }


        private void button8_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl4.ToString();

        }


        private void button9_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl5.ToString();

        }


        private void button10_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl6.ToString();

        }


        private void button11_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl7.ToString();

        }


        private void button12_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl8.ToString();

        }


        private void button13_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "0")

            {

                textBox1.Text = "";

            }


            if (geklickt)

            {

                textBox1.Text = "";

                geklickt = false;

            }


            textBox1.Text += zahl9.ToString();

        }


        private void button16_Click(object sender, EventArgs e)

        {

            textBox1.Text = "";

        }


        private void plusButton_Click(object sender, EventArgs e)

        {

            if (textBox1.Text == "")

            {

                textBox1.Text = "0";

            }

            else

            {

                this.wert1 = Convert.ToDouble(textBox1.Text);

                geklickt = true;

                plus = true;

                minus = false;

                mal = false;

                geteilt = false;

            }

        }


        private void button2_Click(object sender, EventArgs e)

        {

            if (textBox1.Text == "")

            {

                textBox1.Text = "0";

            }

            else

            {

                this.wert1 = Convert.ToDouble(textBox1.Text);

                geklickt = true;

                minus = true;

                plus = false;

                mal = false;

                geteilt = false;

            }

        }


        private void button3_Click(object sender, EventArgs e)

        {

            if (textBox1.Text == "")

            {

                textBox1.Text = "0";

            }

            else

            {

                this.wert1 = Convert.ToDouble(textBox1.Text);

                geklickt = true;

                mal = true;

                plus = false;

                minus = false;

                geteilt = false;

            }

        }


        private void button4_Click(object sender, EventArgs e)

        {

            if (textBox1.Text == "")

            {

                textBox1.Text = "0";

            }

            else

            {

                this.wert1 = Convert.ToDouble(textBox1.Text);

                geklickt = true;

                geteilt = true;

                plus = false;

                minus = false;

                mal = false;

            }

        }


        private void button1_Click(object sender, EventArgs e)

        {

            if (textBox1.Text.Contains(","))

            {

                komma = false;

            }

            else

            {

                komma = true;

                textBox1.Text += ",";

            }


        }





        private void button15_Click(object sender, EventArgs e)

        {


                if (textBox1.Text.IndexOf("-") >= 0)

                {

                    textBox1.Text = textBox1.Text.Remove(0, 1);

                }

                else

                {

                    textBox1.Text = "-" + textBox1.Text;

                }



        }




        private void gleichButton_Click(object sender, EventArgs e)

        {


            if (textBox1.Text == "")

            {

                textBox1.Text = "0";

            }


            if (wert1 == 0)

            {

                ergebnis = Convert.ToDouble(textBox1.Text);

            }



                wert2 = Convert.ToDouble(textBox1.Text);



            if (wert1<0 & wert2 <0)

                {

                    ergebnis = wert1 + wert2;

                    geklickt = false;

                    plus = false;

                    minus = false;

                    mal = false;

                    geteilt = false;

                }


            if (wert2 <0 & wert1 >0)

            {

                ergebnis = wert1 - wert2;

                geklickt = false;

                plus = false;

                minus = false;

                mal = false;

                geteilt = false;

            }



                if (plus == true)

                {

                    ergebnis = (wert1) + (wert2);

                }


                if (minus == true)

                {

                    ergebnis = (wert1) - (wert2);

                }


                if (mal == true)

                {

                    ergebnis = (wert1) * (wert2);

                }


                if (geteilt == true)

                {

                    if (wert2 == 0)

                    {

                        textBox1.Text = "ERROR";

                    }



                    else

                    {

                        if (wert1 == wert2)

                        {


                            ergebnis = 1 / wert1;

                            textBox1.Text = ergebnis.ToString();


                        }


                        else

                        {


                            ergebnis = (wert1) / (wert2);

                            textBox1.Text = ergebnis.ToString();


                        }

                    }


                }

                else

                {

                    textBox1.Text = ergebnis.ToString();


                }


                wert2 = 0;

                wert1 = 0;

                ergebnis = 0;

                plus = false;

                minus = false;

                mal = false;

                geteilt = false;

            }


        private void button17_Click(object sender, EventArgs e)

        {

        }

        }

}

Ich möchte das Schreiben in eine Textdatei durch einen Button Klick auslösen. Es soll jedesmal die einegebene Rechnung (z.B. 9 + 2 = 11) in eine neue Zeile geschrieben werden. Vielleicht so:

StreamWriter MyStreamWriter = new StreamWriter(@"C:\Dokumente und Einstellungen\nm\Eigene Dateien\Taschenrechner\taschenrechner.txt");


      MyStreamWriter.Write(wert1.ToString() + wert2.ToString()) = ergebnis.ToString();

???

Wie bekomme ich es hin, das wenn ich auf + klicke auch plus zwischen wert1 und wert2 steht und wenn da - steht, eben -? Vielleicht mit meiner Variablen "geklickt" die alle Operatoren beinhaltet?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Ich hab noch nicht mit Klassen gearbeitet.

Doch, wenn auch unbewusst...:)

double zahl1 = 1;

        double zahl2 = 2;

        double zahl3 = 3;

        double zahl4 = 4;

        double zahl5 = 5;

        double zahl6 = 6;

        double zahl7 = 7;

        double zahl8 = 8;

        double zahl9 = 9;

        double zahl0 = 0;
Brauchst du diese wirklich? Wenn ja, pack das in ein double-Array, das ist einfacher.
Vielleicht mit meiner Variablen "geklickt" die alle Operatoren beinhaltet?
Nein, das ist doch eine bool-Variable.

StreamWriter MyStreamWriter = new StreamWriter(@"C:\Dokumente und Einstellungen\nm\Eigene Dateien\Taschenrechner\taschenrechner.txt");


      MyStreamWriter.Write(wert1.ToString() + wert2.ToString()) = ergebnis.ToString();

Das sieht doch schon ganz brauchbar aus:beagolisc Alles was du brauchst steht doch in der Textbox (textbox1) drin, einfach deren Text in die Datei schreiben, und danach MyStreamWriter schließen. So sollte es gehen:

StreamWriter writer = null;

    if (!File.Exists("hier kommt der filename hin"))

    {

        writer = new StreamWriter(File.Create("filename"));

    }

    else

    {

        writer = new StreamWriter(File.Open("filename",FileMode.Append, FileAccess.Write));

    }


    writer.WriteLine(textbox1.Text);            

    writer.Close();        

Link zu diesem Kommentar
Auf anderen Seiten teilen

So sollte es gehen:


StreamWriter writer = null;

    if (!File.Exists("hier kommt der filename hin"))

    {

        writer = new StreamWriter(File.Create("filename"));

    }

    else

    {

        writer = new StreamWriter(File.Open("filename",FileMode.Append, FileAccess.Write));

    }


    writer.WriteLine(textbox1.Text);            

    writer.Close();        

Igitt, dann doch lieber diesen Konstruktor benutzen, da muss man nicht abfragen, ob die Datei bereits existiert.

(Programmierer, schreibfaul und so. :floet:)

(Außerdem gibts ja noch FileMode.OpenOrCreate)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bins nochmal.

Also wie gesagt läuft alles soweit. Jetzt soll ich meine Aufgabe erweitern.

Es soll nicht nur 9 + 2 = 11 in die Textdatei geschrieben werden, sondern z.B.:

6 + 2 - 3 + 4 * 5 / 3 = 15

Die Variablen wert1 und wert2 merken sich ja immer nur die zuletzt eingebenen Zahlen und ob + - * oder / geklickt wurde.

Wie kann ich das am besten anstellen?

Hier nochmal der Code:


            StreamWriter writer = null;

            if (!File.Exists(Path.Combine(Application.StartupPath, "taschenrechner.txt")))

            {

                writer = new StreamWriter(File.Create(Path.Combine(Application.StartupPath, "taschenrechner.txt")));

            }

            else

            {

                writer = new StreamWriter(File.Open("taschenrechner.txt", FileMode.Append, FileAccess.Write));

            }


            string log = Convert.ToString(wert1);


            if (plus == true)

            {

                log = log + " + ";

            }

            if (minus == true)

            {

                log = log + " - ";

            }

            if (mal == true)

            {

                log = log + " * ";

            }

            if (geteilt == true)

            {

                log = log + " / ";

            }

            log = log + Convert.ToString(wert2) + " = " + textBox1.Text;

            writer.WriteLine(log);

            writer.Close();

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist eigentlich nur ein Interface für Klassen.

D.h. alle Klasse, die dieses Interface implementieren, müssen diese Properties zur Verfügung stellen.

Sinn der Klasse ist ganz einfach; als Beispiel nehm ich mal die von dir vorgegebene Gleichung:

6 + 2 - 3 + 4 * 5 / 3 = 15

Diese verlegt man in Teilstücke, d.h.:

  • ICalculationTerm1(6, 2,+)
  • ICalculationTerm2(ICalculationTerm1.Result, 3,-)
  • ICalculationTerm3(4, 5,*)
  • ICalculationTerm4(ICalculationTerm3.Result, 3,/)
  • ICalculationTerm5(ICalculationTerm2.Result, ICalculationTerm4.Result,+)

Ergo: ICalculationTerm5.Result == 33.333333333

Bearbeitet von TDM
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...