Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Notenberechnung ab Klausur- und Bonuspunkten (Unterprogramme)

Implementieren Sie eine Funktion Berechnenote, die als Eingaben zwei Dezimalzahlen Klausurpunkte und Bonuspunkte erhält und zunächst prüft, ob nicht mehr als 100 Klausurpunkte und nicht mehr als 20 Bonuspunkte übergeben wurden. Sollte einer der Tests fehlschlagen, geben Sie eine Fehlermeldung aus z. B. "Mehr als 20 Bonuspunkte können nicht angerechnet werden".

Sollte beide Teste erfüllt sein, so soll Berechnenote die beiden Punktezahlen addieren und die Note wie folgt berechnen:

0 Punkte = Minimalnote

100 Punkte = Maximalnote

Zwischen 0 und 100 Punkten ist die Verteilung linear.

Alles über 100 Punkte = Maximalnote

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

4 Lösung(en)

package ch.programmieraufgaben.sequenz;

import java.util.Scanner;

/**
 * Programmieraufgbaen Web-Code: 25gzjfjo
 * @version 0.1 (Apr 25, 2017)
 * @author Philipp Gressly Freimann 
 *         (philipp.gressly@santis.ch)
 */
public class Klausurnoten {
	int  MINIMALNOTE        =   1;
	int  MAXIMALNOTE        =   6;
	int  MAXIMALPUNKTE      = 100;
	int  MAXIMALBONUSPUNKTE =  20;
	char ZAHLTRENNZEICHEN   = ' ';

	public static void main(String[] args) {
		new Klausurnoten().top();
	}


	void top() {
		String eingabeString = einlesen("Eingabe");
		float punkte = extrahiereErsteZahl(eingabeString);
		float bonus  = extrahiereZweiteZahl(eingabeString);
		if(punkte > MAXIMALPUNKTE) {
			System.out.println("Maximal nur " + MAXIMALPUNKTE + " Punkte möglich");
			System.exit(1);
		}
		if(bonus > MAXIMALBONUSPUNKTE) {
			System.out.println("Maximal nur " + MAXIMALBONUSPUNKTE + " Bonuspunkte möglich");
			System.exit(1);
		}
		float endPunkte = punkte + bonus;
		if(endPunkte > MAXIMALPUNKTE) {
			endPunkte = MAXIMALPUNKTE;
		}
		float note = endPunkte * 1f / MAXIMALPUNKTE * (MAXIMALNOTE - MINIMALNOTE) + MINIMALNOTE;
		System.out.println("Klausurnote : " + note);
	}


	/**
	 * @param eingabeString
	 * @return
	 */
	private float extrahiereErsteZahl(String eingabeString) {
		int trennpos = eingabeString.indexOf(ZAHLTRENNZEICHEN);
		String ersteZahl = eingabeString.substring(0, trennpos);
		return Float.parseFloat(ersteZahl);
	}
	private float extrahiereZweiteZahl(String eingabeString) {
		int trennpos = eingabeString.indexOf(ZAHLTRENNZEICHEN);
		String zweiteZahl = eingabeString.substring(trennpos);
		return Float.parseFloat(zweiteZahl);
	}


	/**
	 * Java String einlesen
	 * @param string
	 * @return
	 */
	Scanner sc = new Scanner(System.in);
	 String einlesen(String anfrage) {
		System.out.println(anfrage + ": ");
		return sc.nextLine().trim();
	}

} // end of class Klausurnoten
                

Lösung von: Philipp Gressly Freimann (SANTIS Training AG)

package übungen;

import java.util.Scanner;

public class noten_berechnen {

    private static double bonuspunkte;
    private static double punkte;
    private static double maxpunkte = 100;
    public static void main(String[] args) {
        Berechnenote();
    }
    public static void Berechnenote(){
        Scanner sc = new Scanner(System.in);
        System.out.println("Bitte geben sie ihre Prüfungspunkte ein.");
        
        
        boolean wiederholung = false;
        while(wiederholung == false){
            System.out.print("Punkte: ");
            punkte = sc.nextDouble();
                if(punkte > 100 || punkte < 0){
                    System.out.println("Ungültige Eingabe, bitte Wiederholen");
                    wiederholung = false;
                }
                else{
                    wiederholung = true;
                    
                }
        }
        
        boolean wiederholung2 = false;
        while(wiederholung2 == false){
            System.out.print("Bonuspunkte: ");
                bonuspunkte = sc.nextDouble();
                if(bonuspunkte > 20 || bonuspunkte < 0){
                    System.out.println("Ungültige Eingabe, bitte Wiederholen");
                    wiederholung2 = false;
                }
                else{
                    wiederholung2 = true;
                }
        }
        if(wiederholung == true && wiederholung2 == true){
            System.out.println("Notenberchnung: Punktzahl * 5 / 100 + 1");
            double notenpunkte = punkte + bonuspunkte;
            if(notenpunkte > maxpunkte){
                notenpunkte = 6.0;
            }
            else{
                notenpunkte = (((notenpunkte) * 5) / 100) + 1;
            }
            System.out.println("Ihre Note: " + notenpunkte);
            
        }   
        
    }
    
}

                

Lösung von: Nadim Ritter ()

'''
Created on 05.05.2017

@author: Tobias Widner
'''
# -*- coding: UTF-8 -*-

# G L O B A L   C O N S T A N T S #
MAX_MARK = 6
MIN_MARK = 1
MAX_TEST_POINTS = 100
MAX_BONUS_POINTS = 20

# G L O B A L   F U N C T I O N S #
def calculateMark(testPoints, bonusPoints):
    if (testPoints > MAX_TEST_POINTS):
        print("Given test points %1.1f are higher than the maximum allowed: %1.1f" \
              % (testPoints, MAX_TEST_POINTS))
        return
    if (bonusPoints > MAX_BONUS_POINTS):
        print("Given bonus points %1.1f are higher than the maximum allowed: %1.1f" \
              % (bonusPoints, MAX_BONUS_POINTS))
        return
    
    sum_points = testPoints + bonusPoints
    mark = MAX_MARK / MAX_TEST_POINTS * sum_points + MIN_MARK  
    # linear function: f(x) = ax + b -> a = (max)y/(max)x
    return 6 if sum_points > MAX_TEST_POINTS else mark

# M A I N L I N E #
markAchieved = None
while markAchieved is None:
    testPoints = float(input("Insert test points achieved: "))
    bonusPoints = float(input("Insert bonus points achieved: "))
    markAchieved = calculateMark(testPoints, bonusPoints)

print("The mark that you achieved is a %1.2f" % markAchieved)

                

Lösung von: Tobias Widner (ex. SANTIS Training AG Besucher)

/* 
 * File:   Notenberechnung
 * Author: Manuel Stolze
 * Created on 23. Juni 2017, 10:02
 */

#include <cstdlib>
#include <iostream>
using namespace std;

class Klausurnoten {
    
public:
    void Berechne_Note(int, int);
    void einlesen();
private:
    int  minimalnote        =   1;
    int  maximalnote        =   6;
    int  maximalpunkte      = 100;
    int  maximalbonuspunkte =  20;    
};


void Klausurnoten::einlesen(){
    
    int punkte;
    int bonuspunkte;
    
    cout << "Bitte Punktzahl eingeben: ";
    cin >> punkte;
    if (punkte > maximalpunkte){
        cout << "Error: Die Maximalpunktzahl beträgt " << maximalpunkte << "Punkte!";
        exit(0);
    }
    
    cout << "Bitte Bonuspunkte eingeben: ";
    cin >> bonuspunkte;
    if ( bonuspunkte > maximalbonuspunkte){
        cout << "Error: Die Maximalanzahl der Bonuspunkte beträgt " << maximalbonuspunkte <<"Punkte!";
        exit(0);
    }
    Berechne_Note(punkte, bonuspunkte);
}


void Klausurnoten::Berechne_Note(int punkte, int bonuspunkte){
    
    int gesamtpunkte, note;
    
    // Punkteberechnung //
    gesamtpunkte = punkte + bonuspunkte;
    if(gesamtpunkte > maximalpunkte){
        gesamtpunkte = punkte;
    }
    
    // Notenbrechenung //
    note = ((gesamtpunkte) * (maximalnote - minimalnote) / maximalpunkte) + minimalnote;
    cout << "Endnote: " << note;
}


int main(int argc, char** argv) {
    
    // Objekterzeugung //
    Klausurnoten neueKlausurnote;
    neueKlausurnote.einlesen();

    return 0;
}


                

Lösung von: Manuel Stolze (Hochschule Darmstadt)

Verifikation/Checksumme:

0 0 → Note 1 (schlechteste)

100 20 → Note 6 (Bestnote)

80 20 → Note 6 (Bestnote)

100 0 → Note 6 (Bestnote)

40 10 → Note 3.5 (Mittlerer Notenwert)

71 15 → Note 5.3

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.25
Schwierigkeit: Leicht
Webcode: 25gz-jfjo
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen