Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

c# Taschenrechner

Empfohlene Antworten

Veröffentlicht

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!

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.

Taschnerechner in der Forms.cs ausprogrammiert sind --> so hab ichs ja auch :)

dann zeig dein Form.cs doch mal :)

und dann google einfach mal nach oop da gibts genug treffer

mfg

it_crowd

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.

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

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.

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.