Kann man diesen Array so darstellen?


23.11.2021, 15:51

Kann bitte jemand drüber schauen, es ist sehr wichtig.


23.11.2021, 15:57

Das da oben soll ein Struktogramm sein

2 Antworten

Warum hier keine Schleife?

Zuweisung: z = zahlen [ 0 ]
Zuweisung: zahlenA [ 0 ] = z
Zuweisung: z = zahlen [ 1 ]
Zuweisung: zahlenA [ 1 ] = z
Zuweisung: z = zahlen [ 2 ]
Zuweisung: zahlenA [ 2 ] = z
Zuweisung: z = zahlen [ 3 ]
Zuweisung: zahlenA [ 3 ] = z
Zuweisung: z = zahlen [ 4 ]
Zuweisung: zahlenA [ 4 ] = z

Deklaration des Arrays zahlenA = [ ]

Muss man hier nicht die Länge angeben?

Hab noch nie Struktogramme gemacht.

Saraudassssss 
Fragesteller
 23.11.2021, 17:43

Ich dachte, dass man hier keine Schleife benötigt? Oder?

0
Elumania  23.11.2021, 17:44
@Saraudassssss

Ist doch doof so viel zu schreiben. Unten hast du das doch auch gemacht.

0
Saraudassssss 
Fragesteller
 23.11.2021, 17:44
@Elumania

Ich habe ersteinmal die Werte dem anderen Array zugewiesen und habe dann erst das doppelte ausgegeben.

0
Saraudassssss 
Fragesteller
 23.11.2021, 17:45
@Saraudassssss

Aber keine Ahnung, ob das stimmt. Hier antwortet außer du keiner, obwohl es ja nicht wirklich lange braucht, es sich anschauen :-/

0
Elumania  23.11.2021, 17:50
@Saraudassssss

Warum nicht so? Es wird nicht mal ein z benötigt.

Wiederhole für i = 0, i < 5, i = i + 1

zahlenA = [ i ] = zahlen = [ i ]

Schleifenende.

_________

Ausgabe: zahlenA [ i ] = k * z

Das hier ist auch keine Ausgabe sondern es werden erneut Werte gespeichert.

So geht eine Ausgabe:

Schleife von i = 0 bis Arraylänge von zahlenA

Ausgabe: zahlenA [ i ]

Schleife Ende

0

Bedeutet "doppelt" nicht, dass Dein Ziel-Array dann [ 100, 100, 56, 56, 78, 78, 67, 67, 90, 90] wäre?

In dem Fall wäre das (Pseudocode)

For (int I = 0; i < zahlen.length; i++)
{
  zahlenA[i * 2] = zahlen[i]
  zahlenA[(i * 2) + 1] = zahlen[i] // Für die doppelten Einträge
}

Wenn ich das mit dem "doppelt" falsch verstanden habe, einfach die Zeile mit dem Kommentar weglassen.

Die Zwischenvariable z brauchst Du nicht.

Du musst in diesem Fall keine Schleife machen, weil Du die Länge des Arrays kennst. Eine Schleife ist aber die sehr viel schönere Lösung und mit 99,9-prozentiger Sicherheit auch das, was Dein Lehrer sehen will.

Die Ausgabe kannst Du direkt in dieser Schleife machen oder in einer neuen Schleife nach dem selben Schema für das Array zahlenA.

Saraudassssss 
Fragesteller
 23.11.2021, 19:00

Mit doppelt meinte ich [ 200, 112....] In dem anderen Array übertragen. Würde dann meins stimmen?

0
MeielS  23.11.2021, 19:07
@Saraudassssss

Achso. Das k + z am Ende mit k = 2.

Wenn Du das erst bei der Ausgabe machst, wird ja der Inhalt Deines Arrays nicht mehr geändert.

Wenn die Zahlen "doppelt" in das neue Array übertragen werden sollen, wäre das dann nicht richtig. Und zu der Schleife würde ich Dir in jedem Fall raten. Wenn ich Dein Lehrer wäre, würde ich für eine Antwort ohne Schleife mindestens 50% abziehen, auch wenn das Ergebnis stimmen würde.

Korrigiere meine Schleife zu

For (int i = 0; i < zahlen.length; i++)
{
  zahlenA[i] = zahlen[i] * 2
}
0
Saraudassssss 
Fragesteller
 23.11.2021, 19:09
@MeielS

Aber ich habe doch eine while Schleife (wiederhole für i = ....)

0
MeielS  23.11.2021, 19:24
@Saraudassssss

Was wird denn in dieser Schleife wiederholt?

Diese ganzen Zuweisungen sind auf jeden Fall zuviel.

int[] zahlen = {100, 56, 78, 67, 90}
int[] zahlenA

For (int i = 0; i < zahlen.length; i++)
{
  zahlenA[i] = zahlen[i] * 2
  print zahlenA[i]
}

Diese paar Zeilen machen alles, was Dein Ablauf macht, soweit ich das sehe.

Die Zahlen aus dem Array zahlen sind am Ende verdoppelt im Array zahlenA und diese verdoppelten Zahlen wurden ausgegeben.

0
Saraudassssss 
Fragesteller
 23.11.2021, 19:02

Also die Werte von zahlen sollen in zahlenA übertragen werden, aber doppelt

0