Fragensteller
Sehr dringend

Frage
-
Hallo,
Unzwar Ich muss nächste woche eine Datei abgeben für die Schule und kann das überhaupt nicht!
Deshalb bräuchte ich unterstützung.Wenn ihr mir helfen würdet, wär ich sehr Dankbar.
Die Aufgabenstellung ist :
Ich soll mit Windows.Forms eine Combobox mit Zylinder,Quader,Kugel Fertigstellen und dies mit eingabefeldern und eine Ausgabe
Wie kann ich hier weitermachen ? und die rechnungen einfügen ..
Zudem habe ich erstellt :
ComboBox
4 x label
4 x Text
Und der 4.label ist das Ergebnis text.4 ist Ausgabefeld bis jetzt...
private void Taschenrechner_Load(object sender, EventArgs e) { comboBox1.SelectedIndex = 0; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { switch (comboBox1.SelectedIndex) { case 0: label1.Text = "Radius"; label2.Text = "Höhe"; label3.Text = ""; textBox3.Enabled = false; break; case 1: label1.Text = "Länge"; label2.Text = "Höhe"; label3.Text = "Breite"; textBox3.Enabled = true; break; case 2: label1.Text = "Radius"; label2.Text = ""; label3.Text = ""; textBox2.Enabled = false; textBox3.Enabled = false; break; } } private void button1_Click(object sender, EventArgs e) { double Radius; double Hoehe; double Laenge; double Breite; double Oberflaeche; double Volumen; Radius = Convert.ToDouble(textBox1.Text); Hoehe = Convert.ToDouble(textBox2.Text); Laenge = Convert.ToDouble(textBox1.Text); Breite = Convert.ToDouble(textBox3.Text);
- Bearbeitet SonyBlack1992 Freitag, 14. Juni 2013 19:39 Schule
- Bearbeitet Tom Lambert (Koopakiller)Moderator Freitag, 14. Juni 2013 20:59 Code als Codeblock formatiert
Alle Antworten
-
Hallo, dein Code zeigt bisher, das du es geschaft hast die Labeltexte entsprechend anzupassen. Im Button-Click-Handler musst du nun deine Formeln anwenden.Soweit ich die Aufgabe verstanden habe, muss das ergebnis in TextBox4 ausgegeben werden. Hierfür musst du wieder unterscheiden welcher eintrag in der ComboBox ausgewählt wurde.
Erstelle dazu für jeden Eintrag eine Methode, die dann die jeweili9gen Operationen durchführt. Beispielsweise:
double CalcCylinder(double height, double radius) {//...
Diese rufst du dann entsprechend aus dem Eventhandler auf:
switch(comboBox1.SelectedIndex) { case 0: //Werte in double's konvertieren. textBox4.Text = CalcCylinder(height, radius).ToString(); break;
Die Methoden müssen alle den berechneten Wert zurück geben, damit wir einen String daraus formen und diesen ausgeben können.
Zu den Methoden. Die Formeln müsstest du ja kennen, dann musst du diese nurnoch entsprechend übertragen. Beispielsweise für den Zylinder:
//Berechnet das Volumen des Zylinders double CalcCylinder(double height, double radius) { // V = PI*r²*h return Math.PI * Math.Pow(radius, 2) * height; }
Für die Berechnungen ist die Math-Klasse ein großer helfer.
PS: Zum konvertieren in double eignet sich double.TryParse eventuel besser, weil dieses false zurück gibt wenn es sich um keine gültige Zahl handelt, andernfalls wird true zurück gegeben und es wird der Wert im übergebenen Feld gespeichert.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets | Twitter
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier. -
Hi,
damit man dir auch nur ansatzweise helfen kann, müsstest Du uns erstmal verraten, was genau
Ich soll mit Windows.Forms eine Combobox mit Zylinder,Quader,Kugel Fertigstellen und dies mit eingabefeldern und eine Ausgabe
Wie kann ich hier weitermachen ? und die rechnungen einfügen ..bedeuten soll. Eine Combobox solls sein. Soweit hab ichs noch verstanden. Und dann? Soll die drei Optionen "Zylinder", "Quader", "Kugel" haben?
Letztendlich musst Du bei der Berechnungsmethode ebenso wissen, welche Berechnung überhaupt durchgeführt werden soll. Ich würde in der entsprechenden Methode nochmals auf comboBox1.SelectedIndex abfragen und dann je nach Auswahl eine Berechnungsmethode aufrufen (oder die Berechnung gleich im case Zweig erledigen, ist zwar nicht schön, geht aber auch).
Also in etwa so:
private void button1_Click(object sender, EventArgs e) { Text4.Text = Berechne().ToString(); } private double Berechne() { double Ergebnis = 0; switch (comboBox1.SelectedIndex) { case 0: // Durchführen Berechnung Zylinder double Ergebnis = ...; break; case 1: // Durchführen Berechnung Quader double Ergebnis = ...; break; case 2: // Durchführen Berechnung Kugel double Ergebnis = ...; break; } return Ergebnis; }
Die Berechnungen musst Du aber schon selbst machen^^ (Dazu einfach mal ins Mathebuch schauen, da steht, wie man das macht)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Die Fragestellung ist :
Entwerfen Sie ein Programm für die Berechnungvon Volumenkörpern. Alle Berechnungen sind ineigene Methoden anzulegen. Ihr Programm soll Methodund einer Kugel enthalten. Für jeden Volumenkörpersind Volumen und Oberflächeninhalt zu ermitteln.Die Anwendung ist im Visual Studio mit C# als Formularanwendung zu entwickeln.
ich bin aus dein Code etwas schlauer geworden aber kann es nicht in die Tat umsetzen weil ich nicht genau weis wo ich dies einsetzen soll
Hab das mal so versucht:
private void button1_Click(object sender, EventArgs e) { double radius; double hoehe; double Laenge; double Breite; double Oberflaeche; double Volumen; double CalcZylinder; radius = Convert.ToDouble(textBox1.Text); hoehe = Convert.ToDouble(textBox2.Text); Laenge = Convert.ToDouble(textBox1.Text); Breite = Convert.ToDouble(textBox3.Text); Oberflaeche = Convert.ToDouble(textBox4); Volumen = Convert.ToDouble(textBox4); switch (comboBox1.SelectedIndex) { case 0: textBox4.Text = CalcZylinder(hoehe, radius).ToString(); break; { // V = PI*r²*h return Math.PI * Math.Pow(radius, 2) * hoehe; } } } }
FEHLERMELDUNG IST:1)CalcCylinder ist eine VARIABLE wird aber als Methode verwendet
2) return ist Rot unterstrichen :S
- Bearbeitet Tom Lambert (Koopakiller)Moderator Freitag, 14. Juni 2013 21:01 Code als Codeblock formatiert
-
Methoden müssen in Klassen, also in etwa so hier:
class Form1 : Form { public Form1(){/*...*/} void button1_Click(/*...*/} double CalcCylinder(/*...*/} }
Also alle Methoden in die Klasse. Dann sind auch beide Fehler weg.
Methoden in der MSDN: http://msdn.microsoft.com/de-de/library/ms173114.aspxNatürlich brauchst du 2 verschiedene Methoden für den Flächeninhalt und das Volumen. Diese musst du dann entsprechend aufrufen und das Ergebnis den Text-Eigenschaften der beiden Ausgabefelder zuweisen.
PS: Nutze bitte Codeblöcke für den Code.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets | Twitter
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier.- Bearbeitet Tom Lambert (Koopakiller)Moderator Freitag, 14. Juni 2013 20:57 PS
-
Mein Form1.designer.cs
ComboBox (Zylinder,Quader,Kugel)
Label1
Textbox
Label2
Textbox
Label3
Textbox
Button (berechnung)
Button (Clean)
Button(Beenden)
Ergebnis
(Textbox)
....................................................................
Bei der Ausgabe soll Volumen und Oberflächeninhalt berechnet und herausgegeben werden
Ich werde daraust nicht Schlau!bekomme immer mehr Fehler Anzeigen.
verzweiflung!
Mein Code dazu ist nochmal:
namespace versuch_nr4
{
public partial class Taschenrechner : Form
{
public Taschenrechner()
{
InitializeComponent();
}
private void Taschenrechner_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 0;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0: label1.Text = "Radius"; label2.Text = "Höhe"; label3.Text = ""; textBox3.Enabled = false; break;
case 1: label1.Text = "Länge"; label2.Text = "Höhe"; label3.Text = "Breite"; textBox3.Enabled = true; break;
case 2: label1.Text = "Radius"; label2.Text = ""; label3.Text = ""; textBox2.Enabled = false; textBox3.Enabled = false; break;
}
}
private void button1_Click(object sender, EventArgs e)
{
double radius;
double hoehe;
double Laenge;
double Breite;
double Oberflaeche;
double Volumen;
double ergebnis;
radius = Convert.ToDouble(textBox1.Text);
hoehe = Convert.ToDouble(textBox2.Text);
Laenge = Convert.ToDouble(textBox1.Text);
Breite = Convert.ToDouble(textBox3.Text);
Oberflaeche = Convert.ToDouble(textBox4);
Volumen = Convert.ToDouble(textBox4);
ergebnis = Convert.ToDouble(textBox4);
}
private void button1_Click_1(object sender, EventArgs e)
{
private void button1_Click(object sender, EventArgs e)
{
Text4.Text = Berechne().ToString();
}
private double Berechne()
{
double Ergebnis = 0;
switch (comboBox1.SelectedIndex)
{
case 0:
// Durchführen Berechnung Zylinder
double Ergebnis = ;
break;
case 1:
// Durchführen Berechnung Quader
double Ergebnis = ...;
break;
case 2:
// Durchführen Berechnung Kugel
double Ergebnis = ...;
break;
}
return Ergebnis
}
}
} -
Hi,
bevor Du dich noch mehr verrennst, würde ich evtl. nochmal neu anfangen.
Du musst erstmal den Aufbau der Klasse(n) verstehen. Das Gefrickel hier bringt dich nicht weiter, damit hast Du (wenn sich jemand erbarmt, dir das komplette lauffähige Beispiel zu posten) dann zwar etwas, was funktioniert, verstanden hast Du es dann aber trotzdem nicht. Und das willst Du doch, oder? (Also das gezeigte auch verstehen, meine ich)
Ich würde folgendes vorschlagen.
Erstmal eine Form erstellen. Dort dann drei Textboxen (benenn die "Wert1", "Wert2" und "Ergebnis") einfügen. Dazu dann einen Button (in meinem Beispiel "buttonBerechne" genannt) einbauen. Dann eine Methode "Berechne", die nichts anderes macht, als die zwei Werte anzunehmen, diese zu multiplizieren und den berechneten Wert zurückzugeben. Dieser Wert wird dann in die TextBox "Ergebnis" geschrieben.
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void buttonBerechne_Click( object sender, EventArgs e ) { double eingabewert1; double eingabewert2; double.TryParse( Wert1.Text, out eingabewert1 ); double.TryParse( Wert2.Text, out eingabewert2 ); Ergebnis.Text = Berechne( eingabewert1, eingabewert2 ).ToString(); } private double Berechne( double zahl1, double zahl2 ) { double result = 0; result = zahl1 * zahl2; return result; } }
Mach das bitte mal und versuche, den Code zu verstehen. Also bspw. was ist mit der Methode "Berechne", wie funktioniert das, wie kann man die Werte übergeben und wieder zurückgeben.
Das Beispiel ist natürlich (noch) nicht passend für alle deine Anforderungen aber wie gesagt, Du sollst es ja auch verstehen. Und da ist ein kleines Beispiel für den Anfang erheblich sinnvoller.
Wenn Du das dann soweit verstanden hast, erweitere das Beispiel mal um die dritte Textbox für den dritten Wert und erweitere die Methode Berechne in der Form, dass der dritte Wert auch übergeben wird und dann alle drei Werte miteinander multipliziert werden. Den Code dann bitte hier posten.
Anschließend gehen wir dann den nächsten Schritt an.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Freitag, 14. Juni 2013 22:09
-
ich weis was ich machen muss mein problem liegt z.b. bei der Ausgabe von der Berechnung und wo ich die Berechnung einfügen muss weil es müssen 2 verschiedene sachen rausgegeben werden Das Volumen
Oberfläche für Zylinder ist es
volume = Math.PI * Math.Pow(radius, 2) * hoehe;
volume = Math.Round(volume, 2);
oberflaecheninhalt = 2 * Math.PI * radius * (radius + hoehe);
oberflaecheninhalt = Math.Round(volume, 2);und die für Kugel und quader hab bei der Ausgabe probleme...
-
Nimm 2 TextBoxen, nenne diese tbAusgabeVolumen und tbAusgabeFlaeche. Nun gibst du es aus:
tbAusgabeVolumen.Text = volume.ToString(); tbAusgabeFlaeche.Text = oberflaecheninhalt.ToString();
Für die anderen Körper machst du es genauso. Abfragen welchen du berechnen sollst kannst du mit switch. Siehe Stefans 1. Posting (ganz unten).
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets | Twitter
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier. -
unterstriche sind falsch mit der Fehlermldung:
Fehler1 "double" enthält keine Definition für "Text", und es konnte keine
Erweiterungsmethode "Text" gefunden werden, die ein erstes Argument vom Typ
"double" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
@Koopakiller :ich habe 2 Textboxen erstellt und so benannt aber der fehler wir halt angezeigtswitch (comboBox1.SelectedIndex) { case 0: volume = Math.PI * Math.Pow(radius, 2) * hoehe; volume = Math.Round(volume, 2); oberflaeche = 2 * Math.PI * radius * (radius + hoehe); oberflaeche = Math.Round(volume, 2); tbAusgabeVolume.Text = volume.ToString(); tbAusgabeFlaeche.Text = oberflaeche.ToString(); break;
-
tbAusgabeVolume und tbAusgabeFlaeche müssen TextBoxen sein. Bei dir sind es anscheinend double-Werte.
Ich will dir nun dein Programm nicht schreiben, aber da du ja 0 vorran kommst, hier ein kleiner Anfang (C# 2008, ist mit 2010 und 2012 kompatibel):
http://code-13.net/Download/Foren/WindowsFormsApplication1.zipUnd hier mal meine Vorgehensweise:
- Neues C# WinForms Projekt erstellen
- Labels, ComboBox und TextBox auf die Form ziehen.
- Controls ausrichten und Labels Beschriften
- Berechnen-Button hinzufügen
- Namen für Controls festöegen: Control Beschriftung Name ComboBox Körper: cbKoerper TextBox Höhe: tbHoehe TextBox Breite: tbBreite TextBox Länge: tbLaenge TextBox Radius: tbRadius TextBox Volumen: tbAusgabeVolumen TextBox Oberfläche: tbAusgabeOberflaeche Button Berechne! btnBerechne
- Die beiden Ausgabe-TextBoxen auf ReadOnly = True stellen
- Elemente Zur ComboBox hinzufügen: Zylinder Quader Kugel
- DropDownStyle der ComboBox auf DropDownList stellen
- Click-Eventhandler für den Button erstellen, einfach einen Doppelklick drauf machen
- SelectedIndexChanged-Event der ComboBox abbonnieren, wieder einfach ein Doppelklick auf das Control
- Je nach Auswahl in der ComboBox, die TextBoxen deaktivieren. tbBreite.Enabled = true; tbHoehe.Enabled = true; tbLaenge.Enabled = true; tbRadius.Enabled = true; switch (cbKoerper.SelectedIndex) { case 0: tbBreite.Enabled = false; tbLaenge.Enabled = false; break; case 1: tbRadius.Enabled = false; break; case 2: tbBreite.Enabled = false; tbLaenge.Enabled = false; tbHoehe.Enabled = false; break; }
- Im Konstruktor den SelectedIndex der ComboBox auf 0 setzen: public Form1() { InitializeComponent(); cbKoerper.SelectedIndex = 0; }
- Im Click-Eventhandler entsprechend der Auswahl die entsprechenden Methoden aufrufen und ausgeben: private void btnBerechne_Click(object sender, EventArgs e) { double hoehe = 0; double breite = 0; double laenge = 0; double radius = 0; try { hoehe = double.Parse(tbHoehe.Text); breite = double.Parse(tbBreite.Text); laenge = double.Parse(tbLaenge.Text); radius = double.Parse(tbRadius.Text); } catch (Exception) { //Falscheingabe des Benutzers, besser mit TryParse return;//Abbrechen > Fehlermeldung anzeigen MessageBox.Show("")'... } switch (cbKoerper.SelectedIndex) { case 0: tbAusgabeVolumen.Text = BerechneVolumenZylinder(hoehe, radius).ToString(); tbAusgabeOberflaeche.Text = BerechneOberflaecheZylinder(hoehe, radius).ToString(); break; case 1: //Ähnlich wie bei case 0 break; case 2: //Ähnlich wie bei case 0 break; } }
- Erstelle entsprechende Methoden zum Berechnen: private double BerechneVolumenZylinder(double hoehe, double radius) { return Math.PI * Math.Pow(radius, 2) * hoehe; } private double BerechneOberflaecheZylinder(double hoehe, double radius) { return 2 * Math.PI * radius * (radius + hoehe); } //usw...
Den Rest solltest du nun alleine hinbekommen.
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets | Twitter
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier.- Als Antwort vorgeschlagen Stefan FalzModerator Donnerstag, 11. Juli 2013 21:43
-
Danke Koopakiller hab das auch vervollständigt an der letzte stelle s.o.und s.u markiert sagt der mir fehler an aber hab dies auch so weitergemacht wie du vorgeschlagen hattest.
case 0: tbAusgabeVolumen.Text = BerechneVolumenZylinder(hoehe, radius).ToString(); tbAusgabeOberflaeche.Text = BerechneOberflaecheZylinder(hoehe, radius).ToString(); break; case 1: tbAusgabeVolumen.Text = BerechneVolumenQuader(laenge, breite, hoehe).ToString(); tbAusgabeOberflaeche.Text = BerechneOberflaecheQuader(laenge, breite, hoehe).ToString(); break; case 2: tbAusgabeVolumen.Text = BerechneVolumenKugel(radius).ToString(); tbAusgabeOberflaeche.Text = BerechneOberflaecheKugel(radius).ToString(); break;
und hier ist die Rechnung= was sagst du dazu ?
break;
}
}
private double BerechneVolumenZylinder(double hoehe, double radius)
{
return Math.PI * Math.Pow(radius, 2) * hoehe;
}
private double BerechneOberflaecheZylinder(double laenge, double hoehe, double radius)
{
return 2 * Math.PI * radius * (radius + hoehe);
}
private double BerechneVolumenQuader(double laenge, double breite, double hoehe)
{
return laenge * breite * hoehe;
}
private double BerecheOberflaecheQuader(double laenge, double breite, double hoehe)
{
return 2 * (laenge * breite + breite * hoehe + laenge * hoehe);
}
private double BerechneVolumeKugel(double radius)
{
return 4 * Math.PI * radius * 3 / 3;
}
private double BerechneOberflaecheKugel(double radius)
{
return 4 * Math.PI * radius * 2;
}
}
} -
Dann gucke dir nochmal genau die Namen und Signaturen der Methoden an:
BerechneOberflaecheZylinder(hoehe, radius)
BerechneOberflaecheZylinder(laenge, hoehe, radius)
BerechneOberflaecheQuader
BerecheOberflaecheQuader
BerechneVolumenKugel
BerechneVolumeKugel
<Code:13/> - Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets | Twitter
Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
Einen Konverter zwischen C# und VB.NET Code gibt es hier. -
Ich könnte mir bei der Aufgabenstellung auch gut einen Objektorientierten Lösungsansatz vorstellen:
Eine gemeinsame Basisklasse "Volumenkoerper", mit den Methoden Oberflaeche() und Volumen() und davon abgleitet Quader, Zylinder und Kugel mit parametrisierten Konstruktor, über den die spezifischen Eigenschaften festgelegt werden. Quader, Zylinder und Kugel könnten dann über die Auswahl der Combox erzeugt werden und über die beiden Methoden das entsprechende Ergebnis liefern.
Gruß
- Florian
-
Sag mal wie kann ich die Threads löschen ?
Gar nicht. Warum sollte man das auch machen?
Man sollte sich vor dem Posten schon klar darüber sein, dass auch eure Lehrer sowas sehen können.
Selbst wenn Du diesen Thread löschen würdest, was ich als ziemliche Unhöflichkeit gegenüber den Antwortenden empfinden würde, die sich nämlich teils sehr viel Arbeit und Mühe mit den Antworten, die sie auf deine Fragen gegeben haben, gemacht haben., würde das nichts bringen, denn genau dieselbe Fragestellung gibt es noch mehrfach hier und woanders im Netz. Woher sollte der Lehrer also wissen, wer das Posting vefasst hat? (Falls es dir darum geht)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community