Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

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

Bitte melde dich an um einen Kommentar abzugeben

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

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Mittel
Webcode: u3kp-4ffh
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen