Zum Inhalt springen

c# Taschenrechner


neuling04

Empfohlene Beiträge

Hallo Leute

Ich habe den Auftrag einen Taschrenrechner zu programmieren. Nur bin ich ein Anfänger und komme nur äußerst langsam weiter. Deshalb die Frage hat irgendwer schon so einen Taschenrechner?

Der Auftrag lautet:

A) Die Klasse (Kurz: TR) hat 2 Double Felder zur Eingabe, ein Double Feld für das Ergebnis und einen Rechenoperator (string).

B) Das Klicken der Ziffern 0..9 bzw A..F bewirkt keine Kommunikation mit dem TR, es wird nur die Eingabetextbox verändert

C) Beim Klicken auf +,-,*./ wird das Eingabefeld in den Taschenrechner übertragen. Die Methode "plus" rechnet nur dann, wenn beide Eingaben belegt sind. Das Rechenergebnis wird dann im ersten Eingabefeld abgelegt, das zweite auf NULL gesetzt.

D) Die Methode "toString" zeigt das letzte Rechenergebnis an.

E) Die Methode "istgleich" löscht beide Eingabefelder im TR und merkt sich das Rechenergebnis.

F) Teste das Programm und erstelle ein UML-Diagramm bisherigen Lösung.

zB Das Berechnen von 34+25+2+90 soll funktionieren

G) Ergänze im TR weitere Grundrechnungsarten(-,*,...)

Danke im voraus!

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja das hab ich auc shcon probeirt. Nur das problem leigt darin dass alles Taschnerechner in der Forms.cs ausprogrammiert sind --> so hab ichs ja auch :) aber wie gesagt muss ich das Rechen alles in der Klasse auslagern.

Versteh ich jetzt nicht? Ist das Refactoring das Problem?

Kannst Dir einfach eine Helper Class anlegen und alle Methoden zur Berechnung da reinpacken, fertig...

Vielleicht zeichnest Du uns mal ein UML-Diagramm (wie unter Punkt F gefordert), damit wir sehen, wo wir Dir weiterhelfen können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey,

ich könnte dir einen von mir erstellten Taschenrechner geben.

Etwas umbauen musst du ihn aber.

Er hat nur ein Textfeld, wo alle Operatoren und Operanden reingeschrieben bzw geklickt werden.

Die Methode berechen() bekommt also einen String übergeben und gibt einen double (oder decimal?) Wert zurück.

Zum ausrechnen habe ich mir aber einen fertigen Formelparser heruntergeladen. (Die Berücksichtigung von Potenzen, Punkt-vor-Strich,... ist sehr aufwändig)

Es gibt nur ein Problem: Ich bin Pendler und habe zur Zeit Urlaub und bin bis ins neue Jahr bei meiner Familie. Den Rechner habe ich auf Arbeit oder zuhause... Komme also erst am 03.Jan wieder ran.

Wenn du magst kannst du mich ab da nochmal anschreiben. (ICQ bitte!)

Hoffe, dass es dir bis dahin ausreicht.

Gruß, Luk

Link zu diesem Kommentar
Auf anderen Seiten teilen

hier der inhalt der form.cs :

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace GrafischerTaschenrechner

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

double total1 = 0;

double total2 = 0;

bool plusButtonClicked = false;

bool minusButtonClicked = false;

bool divideButtonClicked = false;

bool multiplyButtonClicked = false;

bool quadratButtonClicked = false;

private void zero_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + zero.Text;

}

private void einaus_TextChanged(object sender, EventArgs e)

{

}

private void eins_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + eins.Text;

}

private void zwei_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + zwei.Text;

}

private void drei_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + drei.Text;

}

private void vier_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + vier.Text;

}

private void fuenf_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + fuenf.Text;

}

private void sechs_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + sechs.Text;

}

private void sieben_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + sieben.Text;

}

private void acht_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + acht.Text;

}

private void neun_Click(object sender, EventArgs e)

{

//zum Anzeigen in der Textbox

einaus.Text = einaus.Text + neun.Text;

}

private void clear_Click(object sender, EventArgs e)

{

//löschen des Displays

einaus.Clear();

}

private void plus_Click(object sender, EventArgs e)

{

//es wird der text von der Textbox geholt und in das double Format umgewandelt

total1 = total1 + double.Parse(einaus.Text);

einaus.Clear();

plusButtonClicked = true;

}

private void minus_Click(object sender, EventArgs e)

{

total1 = total1 + double.Parse(einaus.Text);

einaus.Clear();

minusButtonClicked = true;

}

private void mal_Click(object sender, EventArgs e)

{

total1 = total1 + double.Parse(einaus.Text);

einaus.Clear();

multiplyButtonClicked = true;

}

private void durch_Click(object sender, EventArgs e)

{

total1 = total1 + double.Parse(einaus.Text);

einaus.Clear();

divideButtonClicked = true;

}

private void istgleich_Click(object sender, EventArgs e)

{

if (plusButtonClicked == true)

{

total2 = total1 + double.Parse(einaus.Text);

}

if (minusButtonClicked == true)

{

total2 = total1 - double.Parse(einaus.Text);

}

if (multiplyButtonClicked == true)

{

total2 = total1 * double.Parse(einaus.Text);

}

if (divideButtonClicked == true)

{

total2 = total1 / double.Parse(einaus.Text);

}

if (quadratButtonClicked == true)

{

total2 = total1 * total1;

}

einaus.Text = total2.ToString();

total1 = 0;

}

private void quadrat_Click(object sender, EventArgs e)

{

total1 = double.Parse(einaus.Text);

quadratButtonClicked = true;

}

private void komma_Click(object sender, EventArgs e)

{

einaus.Text = einaus.Text + komma.Text;

}

}

}

das problem liegt darin, dass ich nur sehr zögerlich vorankomme die komplette Rechenlogik in die Klasse Taschenrechner auszulagern.. :/

ich weiß leider auch nicht genau warum

mhm.. ne, die zeit wird tag zu tag knapper ich sollte am mittwoch fertig sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

die komplette Rechenlogik in die Klasse Taschenrechner auszulagern.. :/

ich weiß leider auch nicht genau warum

Ein einfacher Grund ist, dass, wenn Du Logik und Graphische Benutzerführung getrennt hast, Du Dir bspw. ganz schnell eine Test-Applikation schreiben kannst, die die Logik Deines Taschenrechners überprüft - ohne dass also jemand explizit die Tasten drücken muss, wird getestet, ob Dein Rechner das tut, was Du von ihm willst; bzw. kannst Du gucken, was Dein Rechner im Fehlerfall tut.

Wie abstrakt darf denn Euer Rechner konzipiert werden?

Ansonsten solltest Du Dir über einen "Syntaxbaum" Gedanken machen.

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