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 (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 von jeronimonino
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

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?

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:

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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