Lösungen Arrays


1) Haustiere

a) Geben Sie aus dem obigen Array - ohne Verwendung einer Schleife - die Nagetiere aus!

Wie soll die Ausgabe Ihres Programms lauten?
Antwort: Meerschweinchen, Hamster, Maus, Ratte, Kaninchen
Welche Funktion (Befehl, Kommando) verwenden Sie für die Ausgabe?
Antwort: alert
Wie greift man auf die Elemente des Arrays zu?
Antwort: z.B. haustiere[3] für das Meerschweinchen
document.write( haustiere[3] + "<br>");
document.write( haustiere[4] + "<br>");
document.write( haustiere[6] + "<br>");
document.write( haustiere[7] + "<br>");
 
b) Geben Sie aus dem obigen Array die Vögel mit einer Schleife aus.

Wie soll die Ausgabe lauten?
Antwort: Adler, Amsel, Fink
Das wievielte Element ist jeweils ein Vogel?
Antwort: jeweils das dritte Element
Welche Schleife sollten Sie verwenden?
Antwort: for-Schleife
Wie greift man auf jedes X-te Element eines Arrays zu?
for( var i=0; i<...-length; i=i+3 )
for( var i=2; i<haustiere.length; i=i+3 )
{
  alert( haustiere[i] );
}
c) Wählen Sie aus dem obigen Array zufällig ein Haustier aus!

Wie viele Elemente hat das Array?
Antwort: haustiere.length
Wie addressiert man das letzte Element?
Antwort: haustiere[length-1]
Was muss man tun, um eine ganze Zufallszahl zu ermitteln,
welche zwischen 0 inkl. und dem letzten Element des Arrays liegt?
// Antwort: eine Zufallszahl ermitteln zwischen 0 (inklusive) und length-1 (inklusive)
var haustiere = new Array( "Hund", "Katze", "Adler"
                         , "Meerschweinchen", "Hamster", "Amsel"
                         , "Maus", "Ratte", "Fink", "Kaninchen" );
 
var zufall;
zufall = Math.floor( Math.random() * haustiere.length );
alert( haustiere[zufall] );

2) Perdeboxen

// Stall mit 10 leeren Boxen | | | | | | | | | | |
var Pferdeboxen = new Array(10);
 
// Pferde einquartieren
Pferdeboxen[0] = "Peggy";
Pferdeboxen[3] = "Moritz";
Pferdeboxen[9] = "Dangerous";
 
// Wie sieht die aktuelle Belegung aus?
for(i=0; i<10; i++)
{
  document.write( "In Pferdebox Nr."
                + (i+1)
                + " steht das Pferd namens "
                + Pferdeboxen[i]
                + "<br>");
}

Ausgabe:

In Pferdebox Nr.1 steht das Pferd namens Peggy
In Pferdebox Nr.2 steht das Pferd namens undefined
In Pferdebox Nr.3 steht das Pferd namens undefined
In Pferdebox Nr.4 steht das Pferd namens Moritz
In Pferdebox Nr.5 steht das Pferd namens undefined
In Pferdebox Nr.6 steht das Pferd namens undefined
In Pferdebox Nr.7 steht das Pferd namens undefined
In Pferdebox Nr.8 steht das Pferd namens undefined
In Pferdebox Nr.9 steht das Pferd namens undefined
In Pferdebox Nr.10 steht das Pferd namens Dangerous

3) Namen

var namen = new Array(   1, "Bernd"
                       , 2, "Anna"
                       , 3, "Michael"
                       , 4, "Katharina"
                       , 5, "Frank"
                       , 6, "Susanne" );
 
for( var i=1; i<namen.length; i+=2 )
{
   document.write( namen[i] + " " );
}

4) Hauptstadtratespiel

Der Header Ihrer Datei sieht wahrscheinlich jetzt so aus:
 
  <title>Staaten und Hauptstädte</title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  <script type="text/javascript" src="StaatenUndHauptstaedte.js"></script>
 
In einem Script im Body befindet sich dann z.B. der folgende Quelltext:
    var nochEinmal=true;
    var zufallsland=StaatenUndHauptstaedte[0];
    var geraten="";
    var richtigZaehler=0;
    var falschZaehler=0;
 
    do
    {
      feld = Math.floor( Math.random()*StaatenUndHauptstaedte.length );
      if( feld%2 == 1 )
      {
        feld--;
      }
      zufallsland = StaatenUndHauptstaedte[feld];
      geraten = prompt("Wie heisst die Hauptstadt von " + zufallsland + "?");
      if( geraten == StaatenUndHauptstaedte[feld+1] )
      {
        document.write( "Super, Sie haben es gewusst! "
                      + StaatenUndHauptstaedte[feld+1]
                      + " ist die Hauptstadt von "
                      + StaatenUndHauptstaedte[feld]
                      + ".<br>");
        richtigZaehler++;
      }
      else
      {
        document.write( "Falsch, das ist nicht richtig! "
                      + StaatenUndHauptstaedte[feld+1]
                      + " ist nicht die Hauptstadt von "
                      + StaatenUndHauptstaedte[feld]
                      + ".<br>");
        falschZaehler++;
      }
      nochEinmal = confirm("Noch einmal raten?");
 
    } while( nochEinmal==true );
 
    document.write( "Sie haben es "
                  + richtigZaehler
                  + "mal gewusst und "
                  + falschZaehler
                  + "mal nicht." );
 
Ein weiterer Tipp zur Ermittlung von geraden und ungeraden Feldern:
   var datensaetze = new Array( "1", "lala", "2", "nanu", "3", "tatü");
 
    // Eine gerade Zahl per Zufall ermitteln
    var GeradeZahl;
    // Eine ungerade Zahl per Zufall ermitteln
    var UngeradeZahl;
 
    GeradeZahl = Math.floor( Math.random()*(datensaetze.length/2) ) * 2;
    alert( "Eine gerade Zahl: " + GeradeZahl + ": " + datensaetze[GeradeZahl] );
 
    UngeradeZahl = Math.floor( Math.random()*(datensaetze.length/2) ) * 2 + 1;
    alert(  "Eine ungerade Zahl: "
         + UngeradeZahl + ": " + datensaetze[UngeradeZahl] );

5) Würfeln

var zufallszahlen = new Array(100);
 
// Eingabe
for( var i=0; i<zufallszahlen.length; i++ )
{
  zufallszahlen[i] = Math.floor( 6 * Math.random() + 1 );
}
 
// Verarbeitung
 
// Ausgabe
for( var j=0; j<zufallszahlen.length; j++ )
{
  document.write( zufallszahlen[j] + " " );
}
 
// Auftreten der Zahlen 1-6 zaehlen
var zaehler = new Array( 0, 0, 0, 0, 0, 0 );
for( var k=0; k<zufallszahlen.length ; k++ )
{
  zaehler[zufallszahlen[k]-1]++;
}
 
// Folgende Ausgabe erzeugen: 1:16x 2:17x 3:16x 4:14x, 5:19x, 6:18x
for( var l=0; l<zaehler.length ; l++ )
{
  document.write( l+1 + ":" + zaehler[l] + "x " );
}
 
// Auswertung des höchsten Wertes
var hoechsterWertIndex=0;
for( var m=0; m<zaehler.length ; m++ )
{
  if( zaehler[m] > zaehler[hoechsterWertIndex] )
  {
    hoechsterWertIndex = m;
  }
}
document.write( "Am meisten gewürfelt wurde die Zahl: "
              + (hoechsterWertIndex+1) + " Anzahl: " + zaehler[hoechsterWertIndex] );
 
 
 
// und jetzt bitte noch die am wenigsten gewürfelte Zahl herausfinden!

6) Temperaturen

var temperaturen = new Array();
 
for( var i=0; i<100; i++ )
{
  temperaturen[i]=Math.random() * 60 - 20;
}
 
for( var i=0; i<100; i++ )
{
  document.write(temperaturen[i].toFixed(2) + ", ");
}

7) Kontostände

    // a) Legen Sie ein Array an zwecks Speicherung der Kontostände der letzten 1000 neuen Bankkunden.
 
    var kontostaende = new Array(1000);
 
    // b) Ermitteln Sie per Zufallsgenerator zufällige Kontostände zwischen -10.000 und 250.000 Euro
    //    und füllen Sie damit das Array.
 
    var zufallskontostand;
    for( var i=0; i<1000; i++ )
    {
      zufallskontostand = Math.random()*260000 - 10000;
      kontostaende[i] = zufallskontostand;
    }
 
    // Geben Sie das Array-Feld mit dem niedrigsten Kontostand aus, z.B. konstostaende[3] = -9.173,82 Euro.
 
    var niedrigsterKtoFeldNr=0;
    for( var i=0; i<1000; i++ )
    {
      if( kontostaende[i] < kontostaende[niedrigsterKtoFeldNr] )
      {
        niedrigsterKtoFeldNr=i;
      }
    }
    document.write( "Niedrigster Kontostand: kontostaende["
                  + niedrigsterKtoFeldNr
                  + "] = "
                  + kontostaende[niedrigsterKtoFeldNr].toFixed(2)
                  + "Euro.<p>" );
 
    // d) Geben Sie das Array-Feld mit dem höchsten Kontostand aus, z.B. kontostaende[234] = 963.234,34 Euro
 
    var hoechsterKtoFeldNr=0;
    for( var i=0; i<1000; i++ )
    {
      if( kontostaende[i] > kontostaende[hoechsterKtoFeldNr] )
      {
        hoechsterKtoFeldNr=i;
      }
    }
    document.write( "Höchster Kontostand: kontostaende["
                  + hoechsterKtoFeldNr
                  + "] = "
                  + kontostaende[hoechsterKtoFeldNr].toFixed(2)
                  + "Euro.<p>" );
 
    // e) Geben Sie den durchschnittlichen Kontostand aus,
    // z.B. so: "Das Guthaben der neuen Bankkunden beträgt durchschnittlich 134.872 Euro".
 
    var SummeAllerKonten=0;
    for( var i=0; i<1000; i++ )
    {
       SummeAllerKonten += kontostaende[i];
    }
    document.write( "Durchschnittlicher Kontostand: "
                  + (SummeAllerKonten / kontostaende.length).toFixed(2)
                  + "Euro." );
 

8) Youtube-Videos

Etwa so könnte es gehen:
var videos = new Array("GgO-pQBo68w", "GgO-pQBo68w", "GgO-pQBo68w");
 
document.write( "<a href='http://www.youtube.com/watch?v="
               + videos[0]
               + "'>Youtube Link</a> Nachrichten<br>" );

9) Personenverwaltung

Eine Javascript-Datei mit den Personendatensätzen (kompletter Inhalt):
var personen=new Array(
  "Peter","Bauermann","13.2.1991","Berlin",
  "Marianne","Hannauer","23.5.1992","Hamburg"
);
Eine Javascript-Datei mit dem Programm (kompletter Inhalt):
// Liste aller Personen wird ausgegeben
    function completeout()
    {
      document.getElementById("ausgabe").innerHTML += "<h2>Liste aller Personen</h2>";
      for( var i=0; i<personen.length; i++ )
      {
        document.getElementById("ausgabe").innerHTML += personen[i] + " ; ";
        if( (i+1)%4 == 0 )
          document.getElementById("ausgabe").innerHTML += "<br>";
      }
    }
 
    // Das Ausgabefeld wird gelöscht
    function deleteoutput()
    {
      document.getElementById("ausgabe").innerHTML="";
    }
 
    // Eine Person wird dem Array hinzugefügt
    function addperson()
    {
      personen[personen.length]=document.personen.vorname.value;
      personen[personen.length]=document.personen.nachname.value;
      personen[personen.length]=document.personen.geburtsdatum.value;
      personen[personen.length]=document.personen.wohnort.value;
      deleteoutput();
      completeout();
    }
 
    // Eine Person aus dem Array wird angezeigt
    // i muss ein Index sein, welcher auf einen Vornamen verweist, z.B. 0,4,8,...
    function showperson( i )
    {
      //alert(i);
      document.personen.vorname.value=personen[i];
      document.personen.nachname.value=personen[i+1];
      document.personen.geburtsdatum.value=personen[i+2];
      document.personen.wohnort.value=personen[i+3];
    }
 
    // Eine Person wird gesucht
    function getperson( suche )
    {
      var personnr=-1; // -1 gibt es nicht als Array-Element!
 
      for( var i=0; i<personen.length; i++ )
      {
        if( suche === personen[i] )
        {
          var nr=i/4;
          nr = nr.toFixed(0)*4;
          showperson( nr );
          break;
        }
      }
    }
 
 
Eine HTML-Datei mit Formular (kompletter Inhalt):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
 
<head>
 
  <title>Personenverwaltung</title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 
  <script type="text/javascript" src="personen.js"></script>
  <script type="text/javascript" src="personenverwaltung.js"></script>
 
</head>
 
 
<body onload="completeout()">
 
  <h1>Personenverwaltung</h1>
 
  <form name="personen">
    <input type="text" name="vorname" size="20" maxsize="20"><br>
    <input type="text" name="nachname" size="20" maxsize="20"><br>
    <input type="text" name="geburtsdatum" size="20" maxsize="20"><br>
    <input type="text" name="wohnort" size="20" maxsize="20">
    <input type="button" name="add" value="hinzufügen" onclick="addperson()"><p>
    <input type="text" name="sucheperson" size="20" maxsize="20">
    <input type="button" name="add" value="suchen" onclick="getperson( document.personen.sucheperson.value )">
 
  </form>
 
  <div id="ausgabe">
  </div>
 
</body>
 
</html>

Weitere Übungen mit reinen Zahlenspielereien ...

// a)
var zahlen = new Array();
 
// b)
zahlen[0] = 3;
zahlen[1] = 45;
zahlen[2] = 5;
zahlen[3] = 47;
zahlen[4] = 7;
 
// c)
var i=0;
while( i < zahlen.length )
{
  if( zahlen[i] > 40 )
  {
    document.write( zahlen[i] + " ");
  }
  i = i + 1;
}

var zahlen = new Array();
 
zahlen[0] = 2;
zahlen[1] = 43;
zahlen[2] = 4;
zahlen[3] = 45;
zahlen[4] = 6;
 
var i=0;
do
{
  if(zahlen[i]<25)
  {
    document.write(zahlen[i]+" ");
  }
  i++;
}while(i<5);

var a = new Array();
a[0] = 3;
a[1] = 45;
a[2] = 5;
a[3] = 47;
a[4] = 7;
 
for( var j=0; j<5; j++ )
{
 if( a[j] < 10 )
 {
   document.write( a[j] );
 }
}
Ausgabe: 357

var a = new Array();
a[0] = 2;
a[1] = 43;
a[2] = 4;
a[3] = 45;
a[4] = 6;
 
for( var i=0; i<a.length; i++ )
{
  if( a[i]>4 )
  {
    document.write(a[i]);
  }
}
Ausgabe: 43456

Ü6

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
<html>
 
<head>
 
  <title>Wie lautet die Ausgabe des Programms?</title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
 
  <style type="text/css">
 
    pre
    {
      overflow: auto;
      width: 800px;
    }
 
  </style>
 
</head>
 
 
<body>
 
<h1>Das Programm</h1>
<pre>
    var c = new Array(86,24,26,23,76,26,68,65,77,88,9,58,35);
    var b = new Array();
    var i;
 
    for( i=0; i&lt;c.length; i++ )
    {
      if( i&lt;=8 )
      {
        b[i] = c[3+i];
      }
      else
      {
        b[i] = c[i]*2;
      }
    }
 
    for(i=0; i&lt;b.length; i++)
    {
      document.write( "b[" + i + "] = " + b[i] + "&lt;br&gt;" );
    }
 
</pre>
 
<h1>Das Ergebnis</h1>
<script type="text/javascript">
 
 var c = new Array(86,24,26,23,76,26,68,65,77,88,9,58,35);
    var b = new Array();
    var i;
 
    for( i=0; i<c.length; i++ )
    {
      if( i<=8 )
      {
        b[i] = c[3+i];
      }
      else
      {
        b[i] = c[i]*2;
      }
    }
 
    for(i=0; i<b.length; i++)
    {
      document.write( "b[" + i + "] = " + b[i] + "<br>" );
    }
 
  </script>
 
</body>
 
</html>

Download

Inhalt des Arrays b

b[0] = 23
b[1] = 76
b[2] = 26
b[3] = 68
b[4] = 65
b[5] = 77
b[6] = 88
b[7] = 9
b[8] = 58
b[9] = 176
b[10] = 18
b[11] = 116
b[12] = 70