Kann man diesen Array so darstellen?
Hey, Frage in der Klausur: Man soll zwei Arrays deklarieren und eines davon mit Werten initialisieren, die auch gegeben waren. Zunächst soll man die gegeben Werte in den anderen delarierten Array übertragen, aber doppelt. Ich habe es sehr ausführlich gemacht aber es ist ja wichtig, das das richtige Resultat erfolgt. So habe ich es gemacht:
Deklaration des Arrays zahlen und Initialisierung mit den Werten = [ 100, 56, 78, 67, 90 ]
Deklaration des Arrays zahlenA = [ ]
Deklaration einer Zwischenvariablen z
Deklaration der Zwischenvariablen k und Initialisierung mit dem Wert 2 als Ganzzahl
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
Wiederhole für i = 0, i < 5, i = i + 1
Zuweisung: z = zahlenA [ i ]
Ausgabe: zahlenA [ i ] = k * z
Kann bitte jemand drüber schauen, es ist sehr wichtig.
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.
Ist doch doof so viel zu schreiben. Unten hast du das doch auch gemacht.
Ich habe ersteinmal die Werte dem anderen Array zugewiesen und habe dann erst das doppelte ausgegeben.
Aber keine Ahnung, ob das stimmt. Hier antwortet außer du keiner, obwohl es ja nicht wirklich lange braucht, es sich anschauen :-/
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
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.
Also die Werte von zahlen sollen in zahlenA übertragen werden, aber doppelt
Mit doppelt meinte ich [ 200, 112....] In dem anderen Array übertragen. Würde dann meins stimmen?
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
}
Aber ich habe doch eine while Schleife (wiederhole für i = ....)
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.
Ich dachte, dass man hier keine Schleife benötigt? Oder?