Könnte mir einer bitte ein Struktogramm zum Thema Lotto 6 aus 49 erstellen?
Wir müssen ein Struktogramm zu dem Programm 6 aus 49 erstellen. Das Programm haben wir schon selber erstellt aber wir verstehen nicht wie wir dazu das richtige Struktogramm zeichen können. Es wäre super nett wenn jemand antworten könnte der uns helfen kann. :)
Das ist unser Programm:
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Lotto6aus49 {
public static void main(String[] args) {
// Zufällige Generierung von 6 Zahlen (1 bis 49)
Random random = new Random();
int[] generatedNumbers = new int[6];
for (int i = 0; i < 6; i++) {
generatedNumbers[i] = random.nextInt(49) + 1;
}
// Eingabe der 6 Zahlen vom Benutzer
int[] userNumbers = getUserNumbers();
// Vergleich der eingegebenen Zahlen mit den generierten Zahlen
int correctCount = countCorrectNumbers(generatedNumbers, userNumbers);
// Ausgabe des Ergebnisses
printResult(generatedNumbers, userNumbers, correctCount);
}
private static int[] getUserNumbers() {
Scanner input = new Scanner(System.in);
int[] userNumbers = new int[6];
System.out.println("Geben Sie 6 verschiedene Zahlen zwischen 1 und 49 ein:");
for (int i = 0; i < 6; i++) {
System.out.print("Zahl " + (i + 1) + ": ");
int number = input.nextInt();
if (number < 1 || number > 49 || containsNumber(userNumbers, number)) {
System.out.println("Ungültige Eingabe. Bitte geben Sie eine gültige Zahl ein.");
i--;
continue;
}
userNumbers[i] = number;
}
input.close();
return userNumbers;
}
private static boolean containsNumber(int[] numbers, int number) {
for (int n : numbers) {
if (n == number) {
return true;
}
}
return false;
}
private static int countCorrectNumbers(int[] generatedNumbers, int[] userNumbers) {
int correctCount = 0;
for (int number : userNumbers) {
if (containsNumber(generatedNumbers, number)) {
correctCount++;
}
}
return correctCount;
}
private static void printResult(int[] generatedNumbers, int[] userNumbers, int correctCount) {
Arrays.sort(generatedNumbers);
Arrays.sort(userNumbers);
System.out.println("Zahlen der Ziehung: " + Arrays.toString(generatedNumbers));
System.out.println("Ihre Zahlen: " + Arrays.toString(userNumbers));
System.out.println("Anzahl richtiger Zahlen: " + correctCount);
}
}
1 Antwort
Das Programm haben wir schon selber erstellt (...)
Die Reihenfolge eures Vorgehens ist falsch herum. Das Struktogramm ist üblicherweise die erste grobe Lösungsbeschreibung, von der sich im nächsten Schritt der Programmcode ableiten lässt.
(...) aber wir verstehen nicht wie wir dazu das richtige Struktogramm zeichen können.
Ein Struktogramm besteht nur aus einfachen, abstrakten Komponenten (Verzweigungen, Schleifen, Eingabe, Ausgabe, usw.) und ist somit frei von Spezifitäten (Syntax, genauen Methodennamen, u.ä.) einer konkreten Programmiersprache. Welche Blocktypen es gibt und wie man sie in der Regel visuell darstellt, kannst du im Wikipedia-Artikel nachschauen. Zusammengesetzt stellt ein Struktogramm den Lösungsweg für eine Aktion dar. Wenn einzelne Lösungsschritte zu komplex sind, kann ein weiteres Struktogramm angelegt werden, auf welches ein Anweisungsblock des ersten Struktogramms verweist.
Beispiel:
draw Snowman:
------------
| draw Hat |
-------------
| draw Head |
-------------
| draw Body |
-------------
draw Head:
--------------
| draw Eyes |
--------------
| draw Nose |
--------------
| draw Mouth |
--------------
etc.
Die Anweisung draw Head im ersten Struktogramm verweist auf das zweite Struktogramm. Auch die anderen Anweisungen könnte man auf separate Struktogramme verweisen können, um die jeweiligen Aktionen in spezifischere Teilschritte aufzuteilen.