Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Mehrfach auftretende Zahlen in Arrayfeld (http://www.informatikerboard.de/board/thread.php?threadid=713)


Geschrieben von MarcelSchietinger am 16.05.2010 um 13:29:

  Mehrfach auftretende Zahlen in Arrayfeld

Meine Frage:
Aufgabe lautet:

Erstellen sie ein Array mit 10 natürlichen Zufallszahlen aus dem Intervall[0,9] und berechnen Sie welche Elemente im Array mehrfach auftreten und wie oft sie auftreten.

Meine Ideen:
also mein "programm" sieht bisher so aus:

class Feld
{
public static void main (String[] args)


{ int [] a = new int [10];
int [] zaehler= new int [10];
int cnt=0;


for(int i=0;i<a.length;i++)
{
int zufallszahl=(int)(Math.random()*10); // nat.Zufallszahl aus dem Intervall [0;9]
a[i]=zufallszahl;
System.out.print(a[i] + " ");



}

System.out.println();
System.out.println();
System.out.println();

for(int k=0;k<zaehler.length;k++)
{
zaehler[k]=0;
System.out.print(zaehler[k] + " ");
}

System.out.println();
for(int j=0;j<10;j++)
{
System.out.print(j + " ");
}







}


}


ich hab int cnt=0; deklariert, diese zahl soll hochzählen sobald einträge im array gleich sind, nur weis ich nicht wo ich diesen zähler unterbringen muss...!

kann jmd helfen?



Geschrieben von MaBa am 17.05.2010 um 13:14:

 

Hallo Marcel,

das Füllen mit Zufallszahlen ist doch o.k. Jetzt musst du nur noch durch das Array wandern, dir jede Zahl merken und für den Rest des Arrays checken, ob die Zahl gleich deiner gemerkten Zahl ist. Ist das der Fall, dann kannst du deinen Counter incrementieren, ansonsten gehst du einfach weiter im Array.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
public class Feld
{
  public static void main (String[] args)
  {
    int [] a = new int [10];
    int cnt=1;

    for(int i = 0; i < a.length; i++)
    {
      int zufallszahl=(int)(Math.random()*10); // nat.Zufallszahl aus dem Intervall [0;9]
      a[i]=zufallszahl;
      System.out.print(a[i] + " ");
    }

    System.out.println("\n\n");

    for(int i = 0; i < a.length; i++)
    {
      for(int j = i+1; j < a.length; j++)
      {
        if(a[j] == -1) continue;
      
        if(a[j] == a[i])
        {
          cnt++;
          a[j] = -1;
        }
      }

      if(a[i] != -1)
              System.out.println(a[i] + ": " + cnt + " mal");
      cnt = 1;
    }
  }
}


Das Belegen von a[j] mit -1 sollte helfen, dass jede Zahl nur einmal ausgegeben wird. (Das wird nachher bei der Ausgabe berücksichtigt).

Der Code ist nur eine "Skizze", daher nur quick&dirty und ungetestet.
Sollte aber so funktionieren und die Aufgabe erfüllen ;-)

Viele Grüße,
MaBa


Forensoftware: Burning Board, entwickelt von WoltLab GmbH