Veröffentlicht 15. März 201015 j 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(); } }
15. März 201015 j 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.
15. März 201015 j Autor 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 201015 j von jeronimonino
15. März 201015 j 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.
15. März 201015 j Autor 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
15. März 201015 j 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?
15. März 201015 j Autor 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
15. März 201015 j Wink mit Zaunpfahl und so: Was passiert bei 1.49? :floet: Was passiert, wenn ich zwei mal am Stück auf Berechnen klicke?
15. März 201015 j Autor 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
16. März 201015 j 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
16. März 201015 j 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:
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.