Methoden Hausaufgabe

inq51

Mitglied
Hi,

ich weiß, es ist eine lange Aufgabe aber ich bin am verzweifeln. Arbeite schon seit 2 Tagen an dieser Aufgabe aber ich weiß nicht mehr weiter, deshalb poste ich sie jetzt hier.
Ich habe in Kommentaren geschrieben, wo ich nicht mehr weiterkomme, aber ich schreibe hier auch nochmal die ganze Aufgabenstellung hin, damit man es besser nachvollziehen kann.

1.Legen Sie eine Klasse Tarife mit einer main-Methode an.

2.
a) Implementieren Sie nun ein Unterprogramm prepaid welches die Parameter int minuten und int sms übergeben bekommt, und einen int-Wert zurückliefert.

Berechnen Sie im Unterprogramm die Kosten, die durch die vertelefonierten Minuten und die Anzahl versendeter SMS entstehen und geben Sie das Ergebnis zurück.

b) Schreiben sie analog dazu eine Methode vertrag mit gleichen Übergabeparametern und gleichem Rückgabetyp wie die Methode prepaid.
- Erstellen sie zunächst drei Konstanten GRUNDPREIS, FREIMINUTEN und FREISMS geeigneten Typs.

- Überprüfen sie mit zwei if-Abfragen, ob länger telefoniert oder/und mehr SMS verschickt wurden als Freiminuten bzw. Frei-SMS verfügbar sind, und lassen Sie das Programm, wenn nötig, die Aufpreise berechnen. Speichern Sie die beiden Ergebnisse in zwei int-Variablen gespraechskosten und smskosten.

-Geben Sie die Gesamtkosten (Grundpreis + Gespraechskosten + SMS-Kosten) in Cent zurück.

3a)Legen Sie nun ein neues Unterprogramm int vertragBilligerAb(int anzahlSms) an. Es soll für einen Verbraucher, der monatlich eine feste Anzahl anzahlSms SMS-Nachrichten schreibt, ermitteln, ab welcher Gesprächsdauer sich der Vertragstarif mit Grundgebühr für ihn lohnt.

Überprüfen sie für Gesprächszeiten von 0 bis maximal 45000 Minuten, welcher der Tarife billiger ist. Sobald Sie die Dauer gefunden haben, ab der der Prepaid-Tarif höhere Kosten verursacht, geben Sie diese Dauer als Ergebnis zurück.

b) Die Methode void vergleiche() soll nun auch unterschiedliche Mengen versendeter SMS-Nachrichten berücksichtigen und eine entsprechende Übersicht anzeigen.

Die SMS-Nachrichten sollen in Fünferschritten, also für 0..5..10..60 SMS, ausgeben, ab welcher Gesprächsdauer der Vertragstarif günstiger ist. Verwenden Sie folgendes Format für die Ausgabe auf stdout:
Bei 0 SMS ist der Vertrag ab 117 Minuten Gespraechszeit guenstiger.
Bei 5 SMS ist der Vertrag ab 111 Minuten Gespraechszeit guenstiger.
...
Benutzen Sie die vorher implementierte Methode vertragBilligerAb

c) Rufen sie vergleiche() in der main-Methode auf


Soweit bin ich bisher gekommen:
Java:
public class Tarife {

	public static int prepaid(int anzahlminuten, int anzahlsms){		
		int kostensms = 19;	 // 19 Cent/SMS
		int kostenminuten = 15; // 15 Cent/Minute
		int gesamtkosten = anzahlminuten * kostenminuten + anzahlsms * kostensms;
		return gesamtkosten;
												   }
	public static int vertrag(int minuten, int sms){		
		int anzahlminuten = 100;
		int anzahlsms = 100;
		int kostensms = 19;	 // 19 Cent/SMS
		int kostenminuten = 29; // 29 Cent/Minute
		final int  GRUNDPREIS = 1745;	// 17,45€
		final int  FREIMINUTEN = 120;	// 120 Minuten
		final int  FREISMS = 40;		// 40 SmS
		
		int smskosten = 0;
		if (anzahlsms > FREISMS){
			int differenz = anzahlsms - FREISMS;
			smskosten = differenz * kostensms;
			}
		
		int gespraechskosten = 0;
		if (anzahlminuten > FREIMINUTEN){
			int differenz = anzahlminuten - FREIMINUTEN;
			gespraechskosten = differenz * kostenminuten;}
		
		int gesamtkosten = GRUNDPREIS + smskosten + gespraechskosten;
			
		return gesamtkosten;
			}
		
	public static int vertragBilligerAb(int anzahlSms){
		int ergebnis = 0;
		for( int anzahlminuten = 0; anzahlminuten < 45000; anzahlminuten++){
			if(vertrag(0,100) < prepaid(0,100)){       //wie schaffe ich es, dass er mir 
				ergebnis = anzahlminuten;}	      //das richtige ergebnis anzeigt, bei
									     //welcher anzahl an minuten der vertrag
		}							    //billiger als der prepaid tarif ist?	
		                                                             //Anzahl an SMS soll konstant sein.
         return ergebnis;					
		}
	public static void vergleiche(){
								        //bei dieser Methode hab ich überhaupt keine 
									//Idee. Was sind die Parameter? Und muss ich
									//hier auch wieder eine for-Schleifen nehmen?
									// siehe 3.b)
}
	public static void main(String[] args) {
	vergleiche();
		
       //hier soll ich vergleiche() aufrufen, welche Parameter? Und muss noch etwas anderes hin?
		
	}

}
 
Zuletzt bearbeitet:

timbeau

Gesperrter Benutzer
Ok...so wie ich das verstanden habe...

Falls Erklärungen nötig sind, gerne. Ansonsten würde ich auch ein Danke annehmen ;)
War aber auch nicht mehr viel zu tun. Die Parameter die du Methoden übergibst sollten dort dann auch genutzt werden. (Methode vertrag)

Java:
package javaforum;

public class Tarife {

	final static int GRUNDPREIS = 1745; // 17,45€
	final static int FREIMINUTEN = 120; // 120 Minuten
	final static int FREISMS = 40; // 40 SmS

	public static int prepaid(int anzahlminuten, int anzahlsms) {
		int kostensms = 19; // 19 Cent/SMS
		int kostenminuten = 15; // 15 Cent/Minute
		int gesamtkosten = anzahlminuten * kostenminuten + anzahlsms
				* kostensms;
		return gesamtkosten;
	}

	public static int vertrag(int minuten, int sms) {
		int anzahlminuten = minuten;
		int anzahlsms = sms;
		int kostensms = 19; // 19 Cent/SMS
		int kostenminuten = 29; // 29 Cent/Minute

		int smskosten = 0;
		if (anzahlsms > FREISMS) {
			int differenz = anzahlsms - FREISMS;
			smskosten = differenz * kostensms;
		}

		int gespraechskosten = 0;
		if (anzahlminuten > FREIMINUTEN) {
			int differenz = anzahlminuten - FREIMINUTEN;
			gespraechskosten = differenz * kostenminuten;
		}

//		System.out.println("SMS " + smskosten);
//		System.out.println("Gespraechskosten " + gespraechskosten);
		int gesamtkosten = GRUNDPREIS + smskosten + gespraechskosten;
//		System.out.println("Gesamt: " + gesamtkosten);

		return gesamtkosten;
	}

	public static int vertragBilligerAb(int anzahlSms) {
		int ergebnis = 0;
		for (int anzahlminuten = 0; anzahlminuten < 45000; anzahlminuten++) {
			if (vertrag(anzahlminuten, anzahlSms) < prepaid(anzahlminuten, anzahlSms)) { // wie schaffe ich es, dass
														// er mir
				ergebnis = anzahlminuten;
				return ergebnis;
			} // das richtige ergebnis anzeigt, bei
				// welcher anzahl an minuten der vertrag
		} // billiger als der prepaid tarif ist?
			// Anzahl an SMS soll konstant sein.
		return -1;
	}

	public static void vergleiche() {
		for (int sms = 0; sms < 100; sms += 5) {
			if(vertragBilligerAb(sms) != -1){
			System.out.println("\nVertrag billiger bei " + sms
					+ " geschriebenen SMS wenn");
			System.out.println("mehr als " + vertragBilligerAb(sms)
					+ " Minuten telefoniert werden.");
			System.out.println("Vergleich: Vertrag(" + vertrag(vertragBilligerAb(sms), sms)/100.0+") und Prepaid(" + prepaid(vertragBilligerAb(sms), sms)/100.0+") €");
			}
			else {
				System.out.println("Vertrag nicht billiger");
			}
		}
	}

	public static void main(String[] args) {
		vergleiche();

		int min = 66;
		int sms = 55;
		System.out.println(min + " Minuten & " + sms + " SMS");
		System.out.println("Prepaid:" + prepaid(min, sms));
		System.out.println("Vertrag:" + vertrag(min, sms));
		

		vergleiche();

	}

}
 
Zuletzt bearbeitet:

Neue Themen


Oben