Noten berechung...

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Noten berechung...

    Moin! :)
    Ich programmiere gerade ein Benotung-System.
    In Wikipedia steht, wenn man von 15 Aufgaben, alle richtig gelöst hat.
    Wäre das eine Note 1+, und wenn man alle 15 Aufgaben falsch hat, wäre es eine Note 6.

    Nun meine Frage:
    Wie kann ich die Sub PrüfungAbgeschlossen() anpassen.
    Ich glaube die Lösung ist eine Dreisatz Berechnung.
    Wenn Aufgaben Anzahl X(beliebig)?

    Die nächste Frage lautet:
    Wieviele Aufgaben müssen es sein, um eine Note zu bekommen.
    Weil wenn ich z.B 1 Aufgabe habe, und ein Fehler mache,
    kann ich nicht gleich eine 6 als Note bekommen.
    Dann müssten es glaub Mindestens 12 Aufgaben sein?
    Stimmt, dies? ?(

    Ich hoffe jemand versteht was ich meine.
    Und findet eine Lösung!
    BIG THX

    edit:
    Lösungsweg siehe unten...
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()

    Naja es kommt ja auch immer drauf an wieviele Fehler man machen kann.
    Also wenn ich z.b. die Aufgabe habe:
    "Was ist 1+1?" a)11 b)2
    Dann hab ich entweder alle Punkte oder keine Punkte. Also entweder eine 6 oder eine 1...

    Auf Wikipedia gibt es eine Tabelle:
    de.wikipedia.org/wiki/Gymnasia…rstufe#Leistungsbewertung
    Da gibt es eine Spalte Rohpunkte.
    Hier hast du Prozentangaben. Ich würde mit denen rechnen.



    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Cheffboss schrieb:

    Ich glaube die Lösung ist eine Dreisatz Berechnung.
    Nein, definitiv nicht.
    Der Spielraum der Note 1 ist relativ eng, er wird mit steigenden Noten größer.
    Früher, also damals, also einst, war 50% eine Note 4, darunter 5.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Achso, diese Punkte meinst du. Die werden nicht in Noten umgerechnet, das sind sogenannte Notenpunkte, welche "normale" Noten in der deutschen Oberstufe (zumindest in BW) ersetzen. Das Gegenstück dazu sind die Verrechnungspunkte, also die Punkte, welche man in einer Klausur erreicht hat. Um diese wiederum in die Notenpunkte umzurechnen, gibt es verschiedene Tabellen. Normalerweise werden hierbei die Verrechnungspunkte auf 60 hochgerechnet (einfacher Dreisatz) und dann wird die Tabelle angewendet. Eine einfache Annäherung, welche du dafür nutzen könntest, wäre folgende: ​Notenpunkte = ((Erreichte Punkte / Erreichbare Punkte) * 6 - 1) * 3.
    @nafets
    Vielen Dank, für die Rechenformel. :)
    Ich werde es gleich mal testen.

    VB.NET-Quellcode

    1. Notenpunkte = ((Erreichte Punkte / Erreichbare Punkte) * 6 - 1) * 3

    Noch eine Frage dazu:
    Wenn es z.B nur 1 Aufgabe gibt, man diese richtig löst, bekommt man eine 1+ ,wenn man aber einen Fehler macht bekommt man dann eine 6.
    Dies möchte ich nicht so...
    Deshalb möchte ich gerne wissen wieviele Fragen es mindestens sein müssen, ob korrekt eine Note zu bekommen.
    Ich glaube 12 Aufgaben, bin mir aber nicht sicher!?
    Wer weiß Bescheid? ?(
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    mindestens
    10, besser 20, da fängt "echte Statistik" an.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moin! :)
    Ich habe mit der Note noch ein Problem.
    Auf dem Screenshort habe ich 41 Fehler von 19 Aufgaben.
    Anstatt eine Note 6 sagt es eine -1.
    Das kann aber nicht sein.
    Was habe ich an der Select Case falsch gemacht?
    Meine Formel:
    Math.Round(((Vokabeln.Richtig / AnzahlderAufgaben) * 6 - 1) * 3)
    (Code siehe unten…)
    Bin auf eure Antwort gespannt!
    BIG THX

    edit:
    Lösungsweg siehe unten...
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()

    Cheffboss schrieb:

    VB.NET-Quellcode

    1. Select Case Math.Round(((Vokabeln.Richtig / AnzahlderAufgaben) * 6 - 1) * 3)
    1. Mach da eine Variable draus und frage die ab, z.B. während des Debuggens, gugst Du hier.
    2. 19 Aufgaben können dach Deiner Nomenklatur nur 19 Fehler haben
      bzw.41 Fehler bei mindestens 41 Aufgaben.
    3. Teste Deine Software.
    ==================
    Teste mal dies:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. ListBox1.Items.Clear()
    3. Dim AnzahlderAufgaben = 41
    4. For Richtig = 0 To AnzahlderAufgaben
    5. Note(Richtig, AnzahlderAufgaben)
    6. Next
    7. End Sub
    8. Private Sub Note(Richtig As Integer, AnzahlderAufgaben As Integer)
    9. Dim strInfoText = String.Format(" richtig {0} von {1}", Richtig, AnzahlderAufgaben)
    10. Dim strNote_Pefekt = " Note Pefekt"
    11. Dim strNote1 = " Note 1"
    12. Dim strNote2 = " Note 2"
    13. Dim strNote3 = " Note 3"
    14. Dim strNote4 = " Note 4"
    15. Dim strNote5 = " Note 5"
    16. Dim strNote6 = " Note 6"
    17. Dim pc = Math.Round(((Richtig / AnzahlderAufgaben) * 6 - 1) * 3)
    18. Dim txt = ""
    19. Select Case pc
    20. Case 15 ' 15
    21. txt = "sehr gut 1+" & strNote_Pefekt
    22. Case 14 ' 14
    23. txt = "sehr gut 1" & strNote1
    24. Case 13 ' 13
    25. txt = "sehr gut -1" & strNote1
    26. Case 11 ' 12
    27. txt = "gut 2+" & strNote2
    28. Case 10 ' 11
    29. txt = "gut 2" & strNote2
    30. Case 9 '10
    31. txt = "gut 2-" & strNote2
    32. Case 8 '9
    33. txt = "befriedigend 3+" & strNote3
    34. Case 7 '8
    35. txt = "befriedigend 3" & strNote3
    36. Case 5 ' 7
    37. txt = "befriedigend 3-" & strNote3
    38. Case 4 ' 6
    39. txt = "ausreichend 4+" & strNote4
    40. Case 3 '5
    41. txt = "ausreichend 4" & strNote4
    42. Case 2 ' 4
    43. txt = "schwach ausreichend 4-" & strNote4
    44. Case 1 ' 3
    45. txt = "mangelhaft 5+" & strNote5
    46. Case -1.0 '2
    47. txt = "mangelhaft 5" & strNote5
    48. Case -2.0 ' 1
    49. txt = "mangelhaft 5-" & strNote5
    50. Case Else
    51. 'txt = "ungenügend 6" & vbNewLine & strInfoText & vbNewLine & strNote6
    52. txt = "ungenügend 6" & strNote6
    53. End Select
    54. ListBox1.Items.Add(txt & strInfoText)
    55. 'MessageBox.Show(txt, "Bewertung", MessageBoxButtons.OK, MessageBoxIcon.Information)
    56. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    @An alle
    Vielen Dank, für eure Antwort.
    Leider funktioniert es immer noch nicht.
    Jetzt habe ich gesehen dass es eine zweite Möglichkeit gibt Noten zu vergeben.
    Vielleicht ist die zweite Möglichkeit leichter zu programmieren.
    Nämlich mit Rohpunkte laut Tabelle(Wikipedia).
    95 % bedeutet sehr gut, und 0 % bedeutet 6.
    Kennt jemand die Formel, um die Leistung in Prozent zu berechne?
    (Richtig / AnzahlderAufgaben)
    Ich würde mich riesig freuen wenn jemand mir die Lösung mitteilt.
    BIG THX :thumbup:
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Tabelle(Wikipedia)
    Welche?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Warum dividierst du nicht einfache die Anzahl der Fehler mit der Gesamtzahl der Aufgaben. Raus bekommst du ein Prozentsatz mit dem du ganz einfach die Noten anhand des IHK Notenschlüssels ermitteln kannst?
    sehr gut = 1
    100 % - 92 %
    gut = 2
    91,99 % - 81 %
    befriedigend = 3
    80,99 % - 67 %
    ausreichend = 4
    66,99 % - 50 %
    mangelhaft = 5
    49,99 % - 30 %
    ungenügend = 6
    < 30 %
    @An alle!
    Vielen Dank,
    ich habe nun einen Code geschrieben.
    Diesen muss ich noch gründlich testen.
    Jetzt auf die schnelle, ging der Code.
    Kann sich jemand den Code anschauen?
    Ich hoffe das dass Problem nun gelöst ist!

    edit:
    Lösungsweg siehe unten...
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Cheffboss“ ()

    @gitarre94 hab ich 3 posts vorher erwähnt....

    Edit: Msgbox ist veralteter VB6 code ;) Messagebox.show() ist die Vb.Net Alternative.

    Lg Mokki
    ​Smartnotr - ein intelligentes Notizprogramm
    zum Thread

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mokki“ ()

    Cheffboss schrieb:

    VB.NET-Quellcode

    1. Case Is = 100 ' 15
    99% würde einen Fehler bringen, machst Du

    VB.NET-Quellcode

    1. Case Is <= 100 ' 15
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Vielen Dank.

    @an alle
    Vielen Dank

    Der Lösungsweg:

    VB.NET-Quellcode

    1. Dim Berechnung As Decimal = Math.Round(Richtig * 100 / AnzahlderAufgaben, 2)

    Mit dieser Formel bekommt man ein % Wert raus.
    Mit diesen kann man dann arbeiten, und jeweils Noten vergeben!
    Siehe Wikipedia Tabelle.
    BIG THX!
    Visual Basic.NET 8o
    MS-SQL
    8o