Noten runden (Schleifen)
Schreiben Sie ein Programm, bei dem der Anweder fünf (5) Schulnoten erfassen kann.
Danach wird der Durchschnitt dieser Noten einmal auf 0.1 und einmal auf 0.5 (Halbe Noten) gerundet ausgegeben.
Erweitern Sie Ihr Programm nun so, dass der Anwender beliebig viele Noten eingeben kann.
0 Kommentare
8 Lösung(en)
package ch.programmieraufgaben.iteration.notenrunden;
/* input: see here https://github.com/pheek/javaInput/blob/master/Input.java */
import static eu.gressly.io.utility.Input.inputDouble;
/**
* Aufgabe programmieraufgaben.ch (5 Noten Runden) (Web Code: u3kp-4ffh)
* @version 0.1 (Jan 23, 2015)
* @author Philipp Gressly Freimann
* (philipp.gressly@santis.ch)
*/
public class FuenfNotenRunden {
public static void main(String[] args) {
new FuenfNotenRunden().top();
}
void top() {
double summe = 0.0;
summe = summe + inputDouble("Bitte 1. Note eingeben: ");
summe = summe + inputDouble("Bitte 2. Note eingeben: ");
summe = summe + inputDouble("Bitte 3. Note eingeben: ");
summe = summe + inputDouble("Bitte 4. Note eingeben: ");
summe = summe + inputDouble("Bitte 5. Note eingeben: ");
double mittelwert = summe / 5.0;
double mittelwert01 = ((int) (10 * (mittelwert + 0.05))) / 10.0;
double mittelwert05 = ((int) (2 * (mittelwert + 0.25))) / 2.0;
System.out.println("Mittelwert : " + mittelwert );
System.out.println("Mittelwert auf 0.1 gerundet: " + mittelwert01);
System.out.println("Mittelwert auf 0.5 gerundet: " + mittelwert05);
}
}
// end of class FuenfNotenRunden
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
package ch.programmieraufgaben.iteration.notenrunden;
/* input: see here https://github.com/pheek/javaInput/blob/master/Input.java */
import static eu.gressly.io.utility.Input.inputDouble;
/**
* Aufgabe programmieraufgaben.ch (5 Noten Runden) (Web Code: u3kp-4ffh)
* @version 0.1 (Jan 23, 2015)
* @author Philipp Gressly Freimann
* (philipp.gressly@santis.ch)
*/
public class EinigeNotenRunden {
public static void main(String[] args) {
new EinigeNotenRunden().top();
}
void top() {
double summe = 0.0;
int anzahl = 0 ;
double aktuell = inputDouble("Bitte 1. Note (>0) eingeben: ");
while(aktuell > 0) {
summe = summe + aktuell;
anzahl = anzahl + 1;
aktuell = inputDouble("Bitte " + (anzahl + 1) + ".te Note eingeben (Abbruch mit 0): ");
}
double mittelwert = summe / anzahl;
double mittelwert01 = ((int) (10 * (mittelwert + 0.05))) / 10.0;
double mittelwert05 = ((int) (2 * (mittelwert + 0.25))) / 2.0;
System.out.println("Anzahl Noten : " + anzahl );
System.out.println("Mittelwert : " + mittelwert );
System.out.println("Mittelwert auf 0.1 gerundet: " + mittelwert01);
System.out.println("Mittelwert auf 0.5 gerundet: " + mittelwert05);
}
}
// end of class EinigeNotenRunden
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
import re, math
pattern = '[1-5].[0-9]|[1-5]'
#Programm zum Berechnen der Noten. Gerundet wird einmal auf 0.1 und auf halbe Noten
def calcNoten():
summe = 0
n = 0
notenliste = []
while n < 1:
eingabe = input("Geben Sie eine Note ein\n\n Geben Sie f ein wenn Sie fertig sind und e fürs beenden: ")
eingabe = eingabe.replace(",", ".")
if eingabe == "e":
n = n + 1
elif eingabe == "f":
anzahlNoten = len(notenliste)
for note in notenliste:
summe = float(summe) + float(note)
durchschnittHalbeNotenGerundet = zahlRunden(summe / anzahlNoten, 0.5)
durchschnittGerundet = round(zahlRunden(summe / anzahlNoten, 0.1), 1)
print("Halbe Noten: ", durchschnittHalbeNotenGerundet)
print("0,1 gerundet: " , durchschnittGerundet)
n = n + 1
elif re.match(pattern, eingabe) != None and float(eingabe) <= 5.0:
notenliste.append(eingabe)
print("Notenliste: ", notenliste, "\n\n\n")
else:
print("FEHLER !!!!!!!!! Bitte geben Sie eine Note zwischen 1 und 5 ein\n\n\n")
def zahlRunden(zahl, schritt_weite):
return math.ceil(zahl / schritt_weite) * schritt_weite
calcNoten()
Lösung von: Max Jando (Hochschule Mannheim)
import math
notenliste = []
def calculate(ende = False):
while ende == False:
try:
note = float(input("Note eingeben (für Ende Buchstaben eingeben): "))
notenliste.append(note)
except:
ende = True
avg = (sum(notenliste)/len(notenliste))
def aufrunden(avg,schritt):
return math.ceil(avg/schritt)*schritt
def abrunden(avg,schritt):
return math.floor(avg/schritt)*schritt
print("Durschnitt exakt: ", avg)
print ("Aufgerundet auf 0.1: ", aufrunden(avg,0.1))
print ("Aufgerundet auf 0.5: ", aufrunden(avg, 0.5))
print ("Abgerundet auf 0.1: ", abrunden(avg, 0.1))
print ("Abgerundet auf 0.5: ", abrunden(avg, 0.5))
calculate()
Lösung von: Py Thon ()
// schleifen? phh.
var grades =
prompt("Noteneingabe (Dezimalpunkte, getrennt durch Leerzeichen):").split(" "),
average = eval(grades.join("+")) / grades.length;
console.log("Mittelwert: " + average);
console.log("Mittelwert auf 0.1 gerundet: " + average.toFixed(1));
console.log("Mittelwert auf 0.5 gerundet: " + Math.round(average * 2) / 2);
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
using System;
namespace Noten_runden
{
/*
* Autor: Hade Mohamed | HTL Bulme
* Contact: proxfreak@gmail.com
*/
class Program
{
static void Main(string[] args)
{
float Durchschnitt = 0.0f; // Durchschnitt als Gleitkommazahl
int Anzahl = 0; // Anzahl der eingegebenen Noten
while (true)
{
Console.Write("Geben sie die Note ein: ");
int Note = int.Parse(Console.ReadLine());
Durchschnitt += Note;
Anzahl++;
Console.WriteLine("Noch eine Note hinzufügen? (Y/N)");
char Again = Convert.ToChar(Console.ReadLine().ToLower());
if (Again == 'n')
break;
}
Durchschnitt = Durchschnitt / Anzahl;
Console.WriteLine("Durchschnitt (0.1 gerundet): " + (10 * (Durchschnitt + 0.05)) / 10.0);
Console.WriteLine("Durchschnitt (0.5 gerundet): " + (2 * (Durchschnitt + 0.25)) / 2.0);
Console.ReadLine();
}
}
}
Lösung von: Name nicht veröffentlicht
REPORT znoten_runden.
PARAMETERS: pa_1 TYPE string. " Eingabe der Noten durch ; getrennt.
DATA: lt_noten TYPE STANDARD TABLE OF string,
ls_noten LIKE LINE OF lt_noten,
lv_zahl TYPE p DECIMALS 1,
lv_index TYPE i VALUE 0,
lv_durchschnitt TYPE p DECIMALS 10,
lv_gerundet TYPE p DECIMALS 1.
SPLIT pa_1 AT ';' INTO TABLE lt_noten. " Aufspalten der Noten
LOOP AT lt_noten INTO ls_noten.
lv_zahl = ls_noten. " Umwandlung von string zu int.
lv_durchschnitt = lv_durchschnitt + lv_zahl. " Addieren aller Noten
WRITE: / 'Note: ', lv_zahl. " Ausgabe der Noten
ADD 1 TO lv_index. " Anzahl der Noten
ENDLOOP.
lv_durchschnitt = lv_durchschnitt / lv_index. " Berechnung des Durchschnitts
WRITE: / 'Durchschnitt: ', lv_durchschnitt.
lv_gerundet = lv_durchschnitt.
" Ausgabe
WRITE: / 'Durchschnitt auf 0.1 gerundet: ',
lv_gerundet.
lv_zahl = lv_gerundet.
" Es wird auf x.0 oder x.5 gerundet und ausgegeben.
lv_gerundet = lv_durchschnitt MOD '0.5'.
IF lv_gerundet = 0.
WRITE: / 'Durchschnitt auf 0.5 gerundet: ', lv_zahl.
ELSEIF lv_gerundet <= '0.2'.
lv_zahl = lv_zahl - lv_gerundet.
WRITE: / 'Durchschnitt auf 0.5 gerundet: ', lv_zahl.
ELSEIF lv_gerundet >= '0.3' AND lv_gerundet <= '0.7'.
lv_zahl = lv_zahl - lv_gerundet + '0.5'.
WRITE: / 'Durchschnitt auf 0.5 gerundet: ', lv_zahl.
ELSEIF lv_gerundet >= '0.8'.
lv_zahl = lv_zahl - lv_gerundet + '1'.
WRITE: / 'Durchschnitt auf 0.5 gerundet: ', lv_zahl.
ENDIF.
Lösung von: Alexander S. (msg systems)
// NET 6.x | C# 10.x | VS-2022
// mögliche Dezimalzeichen: Punkt oder Komma
Console.Write("Bitte Noten leerzeichengetrennt eingeben: ");
var s = Console.ReadLine();
// Fehleingaben abfangen (nur Werte von 1.0 bis 6.0 möglich; alle anderen Zeichen/Werte werden ignoriert)
if (string.IsNullOrEmpty(s)) return;
var g = s.Replace(".", ",").Split(" ").Where(x => double.TryParse(x, out var z) && z is >= 1 and <= 6).Select(x => double.Parse(x)).ToList();
// Ausgabe
var a = g.Average();
Console.WriteLine($"Aufgenommene Noten: {string.Join(" | ", g)}");
Console.WriteLine($"Durchschnitt: {a:0.##}\nDurchschnitt (0.1): {Math.Round(a, 1)}\nDurchschnitt (0.5): {Math.Round(a * 2, 0) / 2}");
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
Bitte 1. Note eingeben: 3.5
Bitte 2. Note eingeben: 4.5
Bitte 3. Note eingeben: 5.3
Bitte 4. Note eingeben: 4.8
Bitte 5. Note eingeben: 5.5
Mittelwert: 4.720000000000001
Mittelwert auf 0.1 gerundet: 4.7
Mittelwert auf 0.5 gerundet: 4.5
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | Mittel |
Webcode: | u3kp-4ffh |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |