Autor Beitrag
Nickname2526
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 08.06.08 22:31 
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 ^^


Zuletzt bearbeitet von Nickname2526 am Mo 09.06.08 09:59, insgesamt 1-mal bearbeitet
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4803
Erhaltene Danke: 1060

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 09.06.08 09:03 
Überleg doch mal genau. Die Länge eines Arrays ist doch unabhängig von den Wertinhalten.
Nickname2526 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 09.06.08 10:08 
das gier habe ich bereits gelesen und oben steht eine übung dazu. Folgendes ist eine Grundlage:

Hier:(www.galileocomputing...3_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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4803
Erhaltene Danke: 1060

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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.