Programmablaufplan

Neue Frage »

Auf diesen Beitrag antworten »
InformatikJava12 Programmablaufplan

Hallo Leute,
Ich habe folgenden Programmablaufplan.
Die Ausgabe davon wäre folgende:

*****
*****
*****

Wie kann ich jetzt den Plan ändern, damit ich folgende Ausgabe erhalte:

+***
*+**
**+*
***+

Mit fehlt da die Idee. Ich bitte euch um eure Hilfe Gott
 
Auf diesen Beitrag antworten »
as_string

Welche Werte haben i und j im Vergleich zueinander, wenn statt eines * ein + ausgegeben werden soll?
Auf diesen Beitrag antworten »
InformatikJava12

Also wsl brauche ich eine zusätzliche Bedingung und ich muss die Anweisung + zeichnen noch einbauen. Die Frage ist jetzt wie und wo:Ich komme leider nicht weiter. Gibst du mir noch ein Tipp bitte verwirrt
Auf diesen Beitrag antworten »
InformatikJava12

Kanst du mir vllt sagen, wo ich den Vergleich zwischen i und j einbauen soll?
 
Auf diesen Beitrag antworten »
as_string

An der Stelle, an der jetzt immer der * ausgegeben wird, musst Du i und j vergleichen und statt einem * eventuell ein + ausgegeben.
Wie wäre denn i und j bei dem + ganz links oben, wie beim zweiten +, wie beim 3.? Fällt Dir etwas auf, wenn Du die i und j be diesen Paaren miteinander vergleichst?
Auf diesen Beitrag antworten »
InformatikJava12

Also beim 1. Durchlauf bis zeichne * ist i=2 und j=1. D.h wenn j<i ist dann soll er + zeichnen, wenn nicht geht es normal weiter mit j=j+1. Aber das hilft dann nicht. Beim 2. Durchlauf würde er dann i=3 sein und j=1. Es würden also dann 2 + gezeichnet. Das + muss ja irgendwie weiterwandern. Ich komme noch nicht dahinter?
Auf diesen Beitrag antworten »
InformatikJava12

Also in der 1. Zeile an der 1. Stelle ist j=1 und i=2
In der 2. Zeile 2. Stelle ist j=2; i=3
3. Zeile und 3. Stelle: j=3;i=4

D.h j ist immer um 1 kleiner als i

Wie drücke ich das aus, dass sich und j immer nur um 1 unterscheiden?
Auf diesen Beitrag antworten »
as_string

Genau, immer eins größer.
Du kannst einfach schreiben, "wenn i = j + 1"
Allerdings finde ich es etwas ungünstig, dass i schon ganz am Anfang der äußeren Schleife erhöht wird, aber j erst nach der Ausgabe. Ich würde das erhöhen von i auch jeweils am Ende der äußeren Schleife machen, also in dem Diagramm in den linken Ast, dort wo auch "gehe in die nächste Zeile" steht.
Dann wäre i nämlich in der Diagonalen immer gleich j und nicht eins höher. Dann wäre auch i die Zeilenzahl und j die Spaltenzahl.
Funktionieren tuts natürlich auch so wie hier, dass i immer eins größer als die Spaltenzahl ist.

Gruß
Marco
Auf diesen Beitrag antworten »
InformatikJava12

Ok vielen Danksmile
Also reicht es auch einfach die Bedinung j=i+1 einfach nach dem j=<5 einzufügen, wobei ich das j=<4 setzen muss für 4 Elemente oder?
Auf diesen Beitrag antworten »
as_string

Ich denke, Du musst so wie so immer mit 4 vergleichen, nie mit 5 und auch nicht mit 3 (sowohl i als auch j)
Wenn Du mit 1 anfängst, dann hast Du nach dem ersten Schleifendurchlauf eine 2 und eine Zeile (oder Spalte) ausgegeben.
Der Vergleich ist positiv und die machst nochmal die Ausgabe und zählst 2 auf 3 hoch.
Damit ist der Vergleich immer noch wahr und Du gibst eine dritte Zeile/Spalte aus und zählst auf 4 hoch.
Jetzt hättest Du erst 3 Zeilen oder Spalten ausgegeben und würdest bei einem Vergleich auf i<=3 oder auch j<=3 aber schon aussteigen, so dass eine Zeile/Spalte fehlen würde.
Erst wenn Du dieses eine Mal noch durch läufst, sind es genau 4 und die Zählvariable hat einen Wert von 5. Erst jetzt darf der Vergleich unwahr sein und muss aus der Schleife gesprungen werden.

Gruß
Marco
Auf diesen Beitrag antworten »
InformatikJava12

Vielen Dank smile Jetzt habe ich es verstanden smile Daumen hoch
Ich habe noch eine Aufgabe.


Entwerfen Sie einen Algorithmus, indem Sie einen Programmablaufplan erstellen, welcher überprüft,ob p eine Primzahl ist.

Kannst du bitte drüber schauen, ob das stimmt?
Auf diesen Beitrag antworten »
as_string

Du schreibst in der einen Entscheidungs-Raute: "i durch p teilbar", aber müsste es nicht umgekehrt sein?
Ansonsten sind die Pfeile in der unteren/linken Ecke etwas verunglückt.

Ansonsten Daumen hoch

Gruß
Marco
Auf diesen Beitrag antworten »
InformatikJava12

Perfekt dankeschön Daumen hoch smile
Ich hätte noch eine kleine Frage. Wie kann ich im Java Programm realisieren, dass eine Jahreseingabe ein Schaltjahr ist oder nicht ohne die Modulooperation zu verwenden.

Die Bedingung weis ich: Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist aber nicht durch 100, es sei denn es ist zusätzlich durch 400 teilbar.
Also ich skizziere meine Idee;
Also sei z die eingegebene Jahreszahl. Dann soll das Programm prüfen, ob rest = z- z*4 = 0 unnd rest = z-z*100 ungleich 0. Wie kann ich das in Java am besten realisieren? Mit if und else wsl aber dann wie genau verwirrt
Auf diesen Beitrag antworten »
as_string

Hallo!

Mir wäre es deutlich lieber, wenn Du für jede Frage einen neuen Thread aufmachen könntest. Besonders diese letzte Frage hat ja gar nichts mit den ersten beiden zu tun.
In der Klasse GregorianCalendar der Java Standardbibliothek gibt es eine Methode isLeapYear().
Schau z.B. mal hier
https://www.tutorialspoint.com/java/util..._isleapyear.htm

Gruß
Marco
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »