Funktion soll andere Funktionen nutzen?!

Bierjunkie

Mitglied
Ich definiere eine Funktion, die das Maximum von vier ganzen Zahlen berechnet.
Soweit habe ich es verstanden.
Doch nun soll diese Funktion mindestens eine der der anderen Funktionen nutzen können.

Was ist damit genau gemeint?
 

nrg

Top Contributor
"nutzen können" hängt mal stark davon ab, was mit "andere Funktionen" gemeint ist :). so kann man nur schwer was sagen. ist das eine Aufgabe? Wenn ja, poste sie mal genauer.
 

Tobse

Top Contributor
Ich verstehe einzig und alleine nicht was der letzte Teil zu bedeuten hat. Hab erst seit zwei Wochen Java :D
Da bist du nicht alleine, obwohl ichmich schon lang mit Java beschäftige. Eine Funktion aknn nicht einfach "die anderen" funktionen benutzen. Das ist wie wenn du sagst, berechne f(x) unter verwendung der anderen werte.
Du kannst eine Funktion deklarieren
Java:
int maximumOf(int i) {
}
Und sie in einer anderen Funktion benutzen
Java:
int maximumOf(int _1, int _2, int _3, int _4) {
     return maximumOf(_1) +
            maximumOf(_2) +
            maximumOf(_3) +
            maximumOf(_4);
}

Sowas ist warscheinlich gemeint.
 
S

SlaterB

Gast
@Tobse
das ist aber schlecht geraten, wahrscheinlich soll doch eine Methode zum Maximum zweier Zahlen benutzt werden

max(a,b,c,d) = max(max(max(a,b),c),d);
 

Bierjunkie

Mitglied
Das sind bisher alle vorherigen Aufgaben, welche ich bis zur aktuellen Fragestellung gelöst habe:

a) Funktionen / Methoden in Java und anderen Programmiersprachen wurden nach dem Vorbild mathemati-
scher Funktionen entworfen. Zeigen Sie dass Sie das Konzept einer mathematischen Funktion beherrschen
indem Sie den Unterschied zwischen einem Parameter (oft auch “formaler Parameter” genannt) und einem
Argument (oft auch “aktueller Parameter” genannt) erläutern.

b) Definieren Sie eine Funktion die das Maximum von zwei übergebenen ganze Zahlen berechnet und ausgibt
und eine die das Maximum von zwei übergebenen ganzen Zahlen berechnet und zurück gibt. Erläutern
Sie den Unterschied.

c) Definieren Sie eine Funktion die das Maximum von zwei eingelesenen ganze Zahlen berechnet und ausgibt
und eine die das Maximum von zwei eingelesenen ganzen Zahlen berechnet und zurück gibt. Erläutern Sie
den Unterschied.

d) Definieren Sie eine Funktion die das Maximum von drei ganzen Zahlen berechnet.
 

Evil-Devil

Top Contributor
Das klingt doch schon wesentlich einleuchtender.

Zwar gibt es eine Max(n1, n2) in Java schon, aber erneut schreiben zum üben kann nicht schaden. Also wenn ich Aufgabe D richtig verstehe mit der Information aus deinem Eingangspost, dann definiert die sich aus den vorangegangen Funktionen.
Wobei bei D nicht dabei steht ob du es ausgeben oder zurückgeben sollst und bei C wirst du wohl auf die Werte von Benutzereingaben zurückgreifen sollen.

Sehr schwammig...erinnert mich an diverse Kunden...

b1)
funktion max1 (zahl1, zahl2)
begin
zahl = zahl1

wenn zahl2 > zahl dann
zahl = zahl2

ausgabe zahl
end

b2)
funktion max2 (zahl1, zahl2)
begin
zahl = zahl1

wenn zahl2 > zahl dann
zahl = zahl2

rückgabe zahl
end

d)
funktion max3 (zahl1, zahl2, zahl3)
begin
rückgabe max2 (zahl1, max (zahl2, zahl) )
end
 

nrg

Top Contributor
wie slater schon gesagt hast, sollst du dann einfach deine selbst geschriebenen Methoden in den anderen wieder verwenden:

(ungetestet)
Java:
	public static int max(int a, int b) {
		return a > b ? a : b;
	}
	
	public static int max(int a, int b, int c) {
		return max(c, max(a, b));
	}
	
	public static int max(int a, int b, int c, int d) {
		return max(d, max(c, max(a, b)));
	}
 

faetzminator

Gesperrter Benutzer
Und ausgeben ist natürlich auch nicht schwer:
[Java]public static void printMax(int a, int b) {
System.out.println(max(a, b));
}[/code]
Auch wenn der Lehrer von der Aufgabenstellung keine Wiederverwendung verlangt, wär das eigentlich
Java:
public static void printMax(int a, int b) {
    System.out.println(a > b ? a : b);
}
Aber eigentlich ist das dämlich :bae:
 

Bierjunkie

Mitglied
Java:
package maximo;
import java.util.Scanner;

public class Maxime {
	public static int max1(int a, int b) {
        return a > b ? a : b;
    }
    
    public static int max1(int a, int b, int c) {
        return max1(c, max1(a, b));
    }
    
    public static int max1(int a, int b, int c, int d) {
        return max1(d, max1(c, max1(a, b)));
    }
    
    public static void main(String args[]){
    	Scanner maximus = new Scanner(System.in);
    	int a,b,c,d,max;
    	System.out.println("Geben sie a ein: ");
    	a = maximus.nextInt();
    	System.out.println("Geben sie b ein: ");
    	b = maximus.nextInt();
    	System.out.println("Geben sie c ein: ");
    	c = maximus.nextInt();
    	System.out.println("Geben sie d ein: ");
    	d = maximus.nextInt();
    	max = max1(a,b,c,d);
    	System.out.println("Die Maxime aus vier Werten entspricht: " +max);
    	
    }

}

Das ist der getestete Vorschlag von nrg. Programm zeigt keine Fehlermeldung, doch entspricht es nun der Aufgabenstellung es so zu programmieren?!
 

Bierjunkie

Mitglied
Da mich die Fragtestellung etwas verwirrt hat, möchte ich mal wissen in welcher Reihenfolge das Programm arbeitet!
Mir ist klar, dass zwischen Zeile 4 und 14 die Berechnung stattfindet, doch ich erinnere mich dunkel daran das mein Tutor irgendwas von einem Sprung erzählte in etwa: Das Programm startet beim Main, es werden Zeilen eingelesen und zack springen wir zu den Berechnungen,...!
 

Landei

Top Contributor
Kein Grund zum Raten: Jede moderne Programmierumgebung hat einen "Debugger". Zuerst setzt du einen Breakpoint auf die erste Zeile nach [c]public static void main(...)[/c], dann startest du den Debugger und kannst dein Programm Schritt für Schritt "durchsteppen" (normalerweise F7) und dabei sogar Variableninhalte und so anschauen.

Ich glaube, das würde ich meinen Eleven als erstes beibringen - spart viel Arbeit...
 
Zuletzt bearbeitet:

Bierjunkie

Mitglied
Kein Grund zum Raten: Jede moderne Programmierumgebung hat einen "Debugger". Zuerst setzt du einen Breakpoint auf die erste Zeile nach [c]public static void main(...)[/c], dann startest du den Debugger und kannst dein Programm Schritt für Schritt "durchsteppen" (normalerweise F7) und dabei sogar Variableninhalte und so anschauen.

Danke :)
 

Oben