Entwickler-Ecke

C# - Die Sprache - Array -Algorithmus - x.length


Nickname2526 - So 08.06.08 22:31
Titel: Array -Algorithmus - x.length
Hi ich habe mal wieder eine Übungsaufgabe, da bin ich mir nicht ganz sicher was richtig ist:

Erstmal die Aufgabe:

Array - Algorithmus 01

INPU/output: Gegeben seinen ein initialisiertes Rang-1-array "x" von double-werten, eine initialisierte double-variable"y" und eine nicht initialisierte int-variable "h"

Zitat:

//1: x,y
double xh;
h=0
for(int i=0; i < x.length ; i++)

{
//2: i
xh = x[i];
if (xh < y) h++;

//3: xh , h
}
//4: h


INPUT 1:
x= new double [] {0,2,-4};
y=2;

Meine frage ist nur welcher wert ist für x.length richtig?
bei eindimensional -> letzter wert -1 = länge ?? Oder?

da ist x.lenght = 3 oder ist das -5 ?
Das ist mein problem bei der Aufgabe. Also ich tendiere ja zu 4 aber ich bin mir eben nicht sicher. Mathematisch wäre ja -4 - 1 = -5 .

Wäre schön wenn mir jemand helfen würde. Danke an euch. Schön abend noch ^^


Th69 - Mo 09.06.08 09:03

Überleg doch mal genau. Die Länge eines Arrays ist doch unabhängig von den Wertinhalten.


Nickname2526 - Mo 09.06.08 10:08

das gier habe ich bereits gelesen und oben steht eine übung dazu. Folgendes ist eine Grundlage:

Hier:(http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_03_004.htm#Xxx999741) unter 3.5.7 steht wie man die länge bzw. die Gesamtanzahl angiebt.

Zitat:
Bei einem eindimensionalen Array wird uns Length ebenfalls die Anzahl der Elemente liefern. In Schleifen, die für jedes Array-Element einmal durchlaufen werden sollen, benötigen wir jedoch meist den letzten Index des Arrays. Dieser ist um genau eins niedriger als der Wert, der von Length zurückgegeben wird, also:

letzterArrayIndex = Array-Bezeichner.Length – 1;


Ich weiß nur nicht ob man den Betrag -1 rechnen soll oder nicht.

oder ist die länge : x.length=3 weil 3 elemte enthalten sind ?

Bei mehrdimensionalen ist die bezichner.length = produkt der enthaltenen elemente, dann waäre ja in meinen beispiel x.length = (0*2*4)= 0 ?
also ich bin total durcheinander, gerade ???

THX


Th69 - Mo 09.06.08 12:12

Zitat:

oder ist die länge : x.length=3 weil 3 elemte enthalten sind ?

Exakt!

Die Berechnung mit "Length - 1" bezieht sich auf den Index des letzten Elementes des Arrays, da diese bei 0 beginnen, d.h. du benötigst für die Schleife 3 Durchgänge mit den Indizes 0, 1 und 2 (daher: Länge - 1).
Wenn du z.B. rückwärts die Schleife durchlaufen willst, dann mußt du eben den obersten Index kennen und dann bis auf 0 runterzählen:

C#-Quelltext
1:
2:
for(int i = x.length - 1; i >= 0 ; i--)
  ...


Und bei mehrdimensionalen Arrays werden auch nur die Anzahl der Elemente multipliziert, d.h. z.B. double[5, 4] ergibt 20 (= 5 * 4) Elemente (egal welche Werte dieses Array beinhaltet).

Du solltest dir sonst noch mal das Kapitel über Arrays in dem Lehrbuch (oder Tutorial) deiner Wahl nachlesen...


Nickname2526 - Mo 09.06.08 12:37

Danke. Hab das Programm mitlerweile gelöst ^^ . Kann ja die lösung davon mal Posten , falls das jemadn interessiert?

Danke danke nochmal. Schön tag noch.