Programm mit Arrays

Simon100

Mitglied
Guten Abend,

habe hier eine Aufgabe vor mir liegen und komme nicht weiter :

Ich soll eine Anwendung schreiben mit einem Datenfeld (Array) der größe 500, zufällig mit den Werten 1 bis 100 füllt.

Das habe ich bereits hinbekommen.


Aber nun soll ich den kleinesten und den größen Wert der im Array ist bestimmen und wie oft die beiden werte vorkommen. und das dann anschließen ausgeben.

Ich weiß nicht genau wie ich dem Programm sagen soll, was der kleinste und größte wert ist.
den es kann ja sein das die werte 1 und 500 gar nicht vorkommen.



Ich hoffe ihr könnt mir helfen.


Das was ich bissher habe:[JAVA=1]

import java.util.Random;

class a2 {


public static void main (String [] args) {

Random rd = new Random() ;

// Deklarieren und Initialisieren

int [] arr = new int [500];
int anzahl = 0;

//Befüllen

for (int i = 0; i<arr.length; i++)
{
arr = rd.nextInt (100);
}

//Auslesen

for (int i = 0; i<arr.length; i++)
{
System.out.println (arr + " ");
}

[/code]
 

Simon100

Mitglied
Ah ok habe es geschafft habe also die Zahlen verglichen

[JAVA=1]
int maximal = arr[0];
for (int c = 0; c < 500; c++) {
if (arr[c] > maximal)
maximal= arr[c];
}
System.out.println("größte Zahl: " + maximal) ;

[/code]


und um den kleinsten wert zu ermitteln muss ich ja an sich das gleiche machen nur das ich paar sachen änder oder ?
 

Simon100

Mitglied
So müsste es doch Aussehen ? ohne das er zählt wie oft die zahlen vorkommen.

Ist das richtig ? [JAVA=1]

import java.util.Random;

class ArrayTest {


public static void main (String [] args)
{
// Deklarieren und Initialisieren
int [] arr = new int [500];
int anzahl = 0;

Random rd = new Random ();

//Befüllen
for (int i = 0; i<arr.length; i++)
{
arr = rd.nextInt (100);
}

//Auslesen
for (int i = 0; i<arr.length; i++)
{
System.out.println (arr + " ");
}

//Suche der kleinsten Zahl

int minimal = arr[0];
for (int d = 0; d < 100; d++) {
if (arr[d] < minimal)
minimal= arr[d];
}
System.out.println("kleinste Zahl: " + minimal) ;


//Suche der größten Zahl

int maximal = arr[0];
for (int c = 0; c < 100; c++) {
if (arr[c] > maximal)
maximal= arr[c];
}
System.out.println("größte Zahl: " + maximal) ;



}
}

[/code]


lg Simon
 
G

Gast2

Gast
in der ersten Schleife bestimmst du den kleinsten Wert im Array.
Jetzt kannst du mit ner zweiten for-Schleife nochmal über das Array laufen und schauen wie oft der Wert vorkommt.
 

Simon100

Mitglied
mh mist ich bekomme das irgendwie nicht hin :(

könntet ihr mehr tipps geben ?
weiß einfach nicht wie ich sie schleife schreiben soll.


lg Simon
 

Deros

Bekanntes Mitglied
du brauchst keine weitere schleife, einfach in der jetzigen noch zusätzlich abfragen ob "if (arr[c] == maximal)" und dann einen counter hochzählen, und nicht vergessen den counter wenn ein neuer max/min-wert gefunden wurde wieder auf 0 zu setzen
 

timbeau

Gesperrter Benutzer
Ohne 2. Schleife kann sich das Maximum doch ändern.

@TE: For-Schleifen alle mit der Länge des Arrays als Abbruchbedingung kreieren.

Java:
for(...; d < 100; d++) {}

kann schnell in die Hose gehen und ist schlechter Stil.

Java:
int minCounter = 0;
int maxCounter = 0;
for (int c = 0; c < arr.size(); c++) {
            if (arr[c] == maximal)
                { //hier machste was?!
}
/* hier äquivalent*/
        }
 

Simon100

Mitglied
DANKE für deine antwort aber irgendwie verstehe ich das immer noch nicht 100 % .

so in der art würde das ja aussehen oder ? was meinstest du mit "counter hochzählen" (z.b. d++) ?

also habe es mal versucht aber es geht noch nicht.

Außerdem habe ich noch eine einfachere schreibweise gefunden um den größen und kleinsten wert zu ermitteln. Wie könnte ich da die anzahl des größen und kleinsten wertes ermitteln


[JAVA=42]// Min und Max suchen
int maxi = 0;
int mini = 100;
for (int i = 0; i<arr.length; i++)
{
maxi = Math.max (maxi, arr );
mini = Math.min (mini, arr );
}

//Ausabe
System.out.println ("Das Maximum betraegt: " + maxi + " und das Minimum betraegt: " + mini + ".");

[/code]


Wer toll wenn ihr mir noch weiter helfen könntet !

<lg simon
 

Michael...

Top Contributor
Es reicht insgesamt eine Schleife mit
Code:
for (int i = 0; i<arr.length; i++)
in der man auf Minimum und Maximum überprüft und ggf. entsprechende Zähler erhöht oder zurücksetzt.
Um dahin zukommen ist es am Anfang vielleicht besser mit zwei Schleifen zu starten eine in der min und max ermittelt werden und eine zweite nachgelagert in der deren Häufigkeit bestimmt wird. Wenn das mal klappt, kann man dann versuchen alles in einer Schleife abzubilden.
 

Michael...

Top Contributor
[JAVA maxi = Math.max (maxi, arr );
mini = Math.min (mini, arr );

Das vereinfacht zwar die min max Bestimmung, aber sicher, dass der Aufgabensteller das als Lösung aktzeptiert? Ausserdem würde diese Vorgehensweise das Bestimmen der Häufigkeit in der selben Schleife erschweren.

Man muss ja pro Extrem nur drei Fälle unterscheiden.
Für das Minimum z.B.:
Wenn der aktueller Wert größer dem akt. Min. mach einfach weiter (und prüfe z.B. auf Maximum)
Wenn der akt. Wert gleich dem akt. Min. erhöhe Zähler um Eins
Wenn der akt. Wert kleiner dem akt. Min. setzte Wert als akt. Min. und setzte Zähler auf Eins.
 

Simon100

Mitglied
Oh ok habe dann meine alte schreibweise genommen und es auch hinbekommen. und im nach hinein wars ja doch nicht soo schwer.

Danke noch mals !!!!!!!!!

lg Simon
 

Neue Themen


Oben