Zum Inhalt springen

[C#] Rechenoptionen in eine Textdatei schreiben


Empfohlene Beiträge

Geschrieben

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 :-)

Geschrieben

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?

Geschrieben

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();        

Geschrieben

Ja ist ja auch logisch, Du schreibst mit deinem Writer ja auch nur TextBox1.Text in die Datei.


writer.WriteLine(String.Format("{0} {1} {2} = {3}", wert1.ToString(), operator, wert2.ToString(), ergebnis.ToString());

operator müßtest du natürlich noch füllen, je nach Rechenoperation.

Geschrieben

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)

Geschrieben

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();

Geschrieben

Wie kann ich das am besten anstellen?

Mehr in Klassen denken.

Bsp:


    public interface ICalculationTerm

    {

        double Value1;

        double Value2;

        char Operator;

        double Result;

    }

Geschrieben (bearbeitet)

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...