jeronimonino Geschrieben 15. März 2010 Geschrieben 15. März 2010 Hi Leute ich habe ein prob mir einer Aufgabe. Ich finde einfach meinen Fehler nicht -.-. der sagt mir immer das Der Durchschnitt net berechnet werden kann. Hier mal der Code. public partial class Form1 : Form { // Globale Variabel zur Zählung der eingegebenen Noten public int zaehlerZensuren = 0; public int summe = 0; public double durchschnitt = 0; // Arrayinitialisierung int[] noten = new int[50]; public Form1() { InitializeComponent(); } private void cm_close_Click(object sender, EventArgs e) { Close(); } private void Form1_Load(object sender, EventArgs e) { } private void cmd_calculate_Click(object sender, EventArgs e) { for (int i = 0; i < zaehlerZensuren; i++) { summe = summe + noten[i]; } durchschnitt = summe / zaehlerZensuren; if (durchschnitt == 1 && durchschnitt <= 1.4) { MessageBox.Show("sehr gut" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } if (durchschnitt == 1.5 && durchschnitt <= 2.4) { MessageBox.Show("gut" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } if (durchschnitt == 2.5 && durchschnitt <= 3.4) { MessageBox.Show("befriedigend" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } if (durchschnitt == 3.5 && durchschnitt <= 4.4) { MessageBox.Show("ausreichend" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } if (durchschnitt == 4.5 && durchschnitt <= 5.4) { MessageBox.Show("mangelhaft" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } if (durchschnitt == 5.5 && durchschnitt <= 6) { MessageBox.Show("ungenügend" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } else { MessageBox.Show("Durchschnitt kann nicht berechnet werden!"); } } private void cmd_neu_Click(object sender, EventArgs e) { txt_durchschnittsnote.Clear(); txt_zensur.Clear(); } private void cmd_next_Click(object sender, EventArgs e) { int zenzur = Convert.ToInt32(txt_zensur.Text); if (zenzur > 6 || zenzur < 0) { MessageBox.Show("Geben Sie bitte eine Note zwischen 1 und 6 ein!"); } else { zaehlerZensuren++; noten[zaehlerZensuren] = zenzur; txt_durchschnittsnote.Text = txt_durchschnittsnote.Text + zenzur + ","; txt_zensur.Clear(); txt_zensur.Focus(); } } Zitieren
TDM Geschrieben 15. März 2010 Geschrieben 15. März 2010 Ohne jetzt mal die Werte zu kennen, die zu stande kommen: Summe ist ein int, d.h. keine Kommas, folglich int / int = int -> durchschnitt ohne KommaHast du && und || verwechselt?Da fehlen paar else vor den ifs. Zitieren
jeronimonino Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 (bearbeitet) Ich probier es mal aus Nein bin mir ziemlich sicher das da && hin muss weil beides gegeben sein muss. Wie meinst du das mit den else ? Bearbeitet 15. März 2010 von jeronimonino Zitieren
grueni Geschrieben 15. März 2010 Geschrieben 15. März 2010 Das ist auch genau das, was du programmiert hast. if (durchschnitt == 5.5 && durchschnitt <= 6) { .... } else { MessageBox.Show("Durchschnitt kann nicht berechnet werden!"); } z.B. hier wird der if-Zweig nur dann durchlaufen, wenn durchschnitt gleich 5.5 ist UND kleiner gleich 6. D.h. du landest im if-Zweig nur dann, wenn durchschnitt exakt 5.5 ist. Genau dasselbe gilt für alle deine anderen if-Abfragen. Zitieren
jeronimonino Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 Also muss es so sein? if (durchschnitt <= 1 && durchschnitt <= 1.4) { MessageBox.Show("sehr gut" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } Naja hat schon mal geholfen allerdings kommen jetzt noch mehr fehler ^^ aber ich schaff das schon thx Zitieren
LadyPreis Geschrieben 15. März 2010 Geschrieben 15. März 2010 was ist denn bei dieser Abfrage der Sinn? Durchschnitt muss kleiner-gleich 1 und kleinergleich 1,4 sein. Steh ich grad aufm Schlauch oder ist das absoluter Blödsinn? Zitieren
jeronimonino Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 Hab es schon gelöst. Hab vor den 5 letzte If ein else gesetzt und in der else if bedingt wurde das == in das entsprechende benötige geändert. Trozdem danke fürs drüber schauen Zitieren
TDM Geschrieben 15. März 2010 Geschrieben 15. März 2010 Wink mit Zaunpfahl und so: Was passiert bei 1.49? :floet: Was passiert, wenn ich zwei mal am Stück auf Berechnen klicke? Zitieren
jeronimonino Geschrieben 15. März 2010 Autor Geschrieben 15. März 2010 1.) Dann kommt die Fehlermeldung das eine Zahl zwischen 1 und 6 eigegeben werden soll. Wird allerdings ein kommata verwendet kommt kein fehler und das Prog läuft ohne probs weiter 2.) das geht nicht weil man erst die mbox bestätigen muss Zitieren
HJST1979 Geschrieben 16. März 2010 Geschrieben 16. März 2010 Hallo jeronimonino TDM meinte nicht das was eingegeben wird sondern was passiert wenn der Durchschnitt 1.49 beträgt Dein Code if (durchschnitt == 1 && durchschnitt <= 1.4) { MessageBox.Show("sehr gut" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } if (durchschnitt == 1.5 && durchschnitt <= 2.4) { MessageBox.Show("gut" + " " + "Der Durchschnitt ist" + " " + Convert.ToString(durchschnitt)); } Hier die "übersetzung" WENN durchnitt == 1 UND durchschnitt <= 1.4 DANN Ausgabe1 WENN durchnitt == 1.5 UND durchschnitt <= 2.4 DANN Ausgabe2 Das bedeutet alles was zwischen 1.4 und 1.5 liegt wird nicht behandelt ! So war es wahrscheinlich gedacht WENN durchnitt >= 1 UND durchschnitt < 1.5 DANN Ausgabe1 WENN durchnitt >= 1.5 UND durchschnitt < 2.5 DANN Ausgabe2 Gruß Hans-Jörg Zitieren
TDM Geschrieben 16. März 2010 Geschrieben 16. März 2010 Genau. Wenn mans schön mit der El(i)se macht (), dann gehts auch einfacherer: if(durchschnitt < 1.5) [INDENT]MessageBox.Show("1")[/INDENT] else if(durchschnitt < 2.5) [INDENT]MessageBox.Show("2")[/INDENT] else if(durchschnitt < 3.5) [INDENT]MessageBox.Show("3")[/INDENT] else if(durchschnitt < n.5) [INDENT]MessageBox.Show("n")[/INDENT] ... else [INDENT]MessageBox.Show("Err.")[/INDENT] A.d.R.: Kleiner als 1 bzw. größer als 6 kann der Durchschnitt durch die Plausibilitätsprüfung so und so nicht werden. :floet: Zitieren
Empfohlene Beiträge
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.