Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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();                

            }



        }

Geschrieben

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 Komma
  • Hast du && und || verwechselt?
  • Da fehlen paar else vor den ifs.

Geschrieben

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.

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

Genau.

Wenn mans schön mit der El(i)se macht (:D), 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:

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