Methoden Array Aufgabe

RaidenVSVamp

Mitglied
Hallo zusammen,
Ich habe eine Aufgabe aus einer Beispiel Klausur nicht ganz verstanden und bräuchte ein bisschen Hilfe. Zudem geht es um Einführung in die Informatik deshalb denke, dass da keine wilden ultra Methoden geschrieben werden müssen also bitte haltet die Antworten möglichst simpel wenn möglich. Es handelt sich um folgende Aufgabe

Aufgabe 3 .)
In dieser Aufgabe sollen Sie die folgenden Methoden realisieren. Hierzu stehen Ihnen folgende Hilfsmethoden zur Verfügung. Verwenden Sie zur Realisierung der Methode eine geeignete Auswahl aus den Hilfsmethoden, die alle öffentlich und statisch sind.
int max(int x, int y) gibt das Maximum zweier Zahlen zurück.
int max(int[ ] a) gibt die gröÿte Zahl eines Arrays zurück.
int min(int[ ] a) gibt die kleinste Zahl eines Arrays zurück.
int sum(int[ ] a) gibt die Summe aller Elemente eines Arrays zurück.
double sqrt(int x) berechnet die Wurzel von x und gibt das Ergebnis zurück.
void printMax(int[ ] a) gibt die größte Zahl eines Arrays aus.

a) Schreiben Sie eine öffentliche, statische Methode max, welche das Maximum aus den zwei int-Arrays a und b berechnet.

jetzt weiß ich nicht genau wie die Aufgabe gemeint ist. (1)Ist es so gemeint, dass man die Maximum werte der Arrays einzeln berechnen soll also eine Methode, die das Maximum von a und b gleichzeitig berechnet bzw. ausgeben könnte . (2)Oder ist es so gemeint dass die Maximum werte von a und b miteinander verrechnet werden sollen. (3) Oder ob die Größte Zahl aus a und b ausgegeben bzw. berechnet werden soll. Vor allem wenn eine der Hilfsmethoden verwendet werden muss.
bei dem letzten weiß ich nicht wie ich das machen soll und bei dem ersten weiß ich nicht wie man das nur mit einer Methode machen soll. Es geht übrigens nur um die Methode man soll kein komplettes Programm schreiben.

so würde ich das bei (1) lösen. Hier überlade ich die Methode max weil ich nicht weiß wie man das ohne macht.

Java:
public static int max (int [] a) {
int sum =0;
for( int i=0;i<a.length;i++) {
if (sum<a[i]) sum = a[i];
} return (sum);

} public static int max (int [] a, int [] b) {
int sum2=0;
for(int j=0;j<b.length;j++) {
if(sum2<b[j]) sum2=b[j];

} return (sum2) } ;

so würde ich das bei (2) lösen

Java:
public static int max (int [] a, int [] b) {
     
     
         int sum=0;
     
        for(int i=0;i<a.length;i++) {
         
            if (sum <a[i]) sum=a[i];
         
            }
     
        int sum2=0;
        for (int j=0;j<b.length;j++) {
         
            if ( sum2<b[j]) sum2=b[j];
        } return(sum+sum2);
 
Zuletzt bearbeitet:

MoxxiManagarm

Top Contributor
a) Schreiben Sie eine öffentliche, statische Methode max, welche das Maximum aus den zwei int-Arrays a und b berechnet.

jetzt weiß ich nicht genau wie die Aufgabe gemeint ist.
Du hast diese Methoden gegeben (sofern ich es richtig verstanden habe)

int max(int x, int y) gibt das Maximum zweier Zahlen zurück.
int max(int[ ] a) gibt die gröÿte Zahl eines Arrays zurück.

Du brauchst dann nur eine klevere Kombinationen aus diesen welche sinngemäß lautet:
- berechne das Maximum des ersten Arrays mit max(int[])
- berechne das Maximum des zweiten Arrays mit max(int[])
- berechne das Maximum aus diesen beiden Maximas mit max(int,int)


Eine Schleife brauchst du dafür wirklich nicht



PS.: public static int max (int [] a, int [] b) ist bereits die Überladung
 

RaidenVSVamp

Mitglied
Du brauchst dann nur eine klevere Kombinationen aus diesen welche sinngemäß lautet:
- berechne das Maximum des ersten Arrays mit max(int[])
- berechne das Maximum des zweiten Arrays mit max(int[])
- berechne das Maximum aus diesen beiden Maximas mit max(int,int
Danke dir für deine Antwort. das hat mir einen sehr guten Anstoß gegeben. perfekte Hilfe. Dann mach ich mich mal wieder ran. Bevor deine Antwort kam habe ich folgendes gemacht. geht das so wohl auch?

Code:
public static int max (int [] a, int [] b) {

                int sum =0;
                int sum2=0;
                  for( int i=0;i<a.length;i++) {

                  if (sum<a[i]) sum = a[i];

                }       for (int i=0;i<b.length;i++) {
                        if (sum2<b[i]) sum2=b[i];

                }         if (sum<sum2) return (sum2);
                          else return(sum);
}
 

MoxxiManagarm

Top Contributor
geht das so wohl auch?
Naja die Benennung sum ist hier schonmal fehl am Platz. Mit deiner Implementierung hast du das, was die Hilfsmethoden machen, selbst ausprogrammiert. Da deine Aufgabenstellung aber lautet, dass du diese Hilfsmethoden einsetzen sollst, würde ich diese Frage mit nein beantworten.

Die Lösung für a) ist schlicht
Java:
public static int max(int[] a, int[] b) {
  return max(max(a), max(b));
}
 

RaidenVSVamp

Mitglied
jaa stimmt danke für die Zeit, die du dir genommen hast ich hätte das dann so gemacht

Java:
public static int max (int [] a, int [] b) {

                int sum = max(a);
                int sum2 = max(b);
                        if (sum<sum2)
                        return (sum2);
                else
                        return(sum);
}

und b hätte ich dann so gelöst
b) Schreiben Sie eine öffentliche, statische Methode average, welche den Durchschnitt eines int-Arrays a berechnet

Java:
public static double average(int [] a){

    double avg=sum(a);
    avg=avg/a.length;
    return(avg);

}
 
Zuletzt bearbeitet:

RaidenVSVamp

Mitglied
Hast recht. Hab mir irgendwie angewöhnt alles immer ausführlich hinzuschreiben. Diese Aufgabe war das einzige was mich bisschen verwirrt hatte. Jetzt fühl ich mich gut vorbereitet für die Klausur am Freitag. Danach nie wieder Informatik für mich im Studium. Eigentlich aber schade hat schon Spaß gemacht. Dankeschön.
Edit:
habs in double geändert
 

Neue Themen


Oben