Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
Enigma
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Uli Bähr
Enigma
Commits
298c09cd
Commit
298c09cd
authored
5 years ago
by
Dennis Eisold
Browse files
Options
Downloads
Patches
Plain Diff
Überprüfung ob Stecker auf dem Steckbrett gesteckt werden dürfen. closes #8
parent
e0480326
No related branches found
No related tags found
1 merge request
!1
Master
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/java/projekt/enigma/model/Codierer.java
+21
-7
21 additions, 7 deletions
src/main/java/projekt/enigma/model/Codierer.java
src/main/java/projekt/enigma/model/Steckbrett.java
+138
-103
138 additions, 103 deletions
src/main/java/projekt/enigma/model/Steckbrett.java
with
159 additions
and
110 deletions
src/main/java/projekt/enigma/model/Codierer.java
+
21
−
7
View file @
298c09cd
...
...
@@ -406,25 +406,24 @@ public class Codierer {
/**
* Setzt das Kabel in beide Ports ein und fügt es dem Steckbrett Array hinzu.
*
* @param
feldNr
: in
t
:
Kabel Nummer welches am Steckbrett eingesteckt wird
* @
param verbindung : String : Verbindung welche die vertauschten Buchstaben angibt
*
@param port : int : Kabel Nummer welches am Steckbrett eingesteckt wird
* @param
verbindung
:
Str
in
g
:
Verbindung welche die vertauschten Buchstaben angibt
* @
return
*/
public
void
setSteckbrett
(
int
feldNr
,
String
verbindung
)
{
this
.
hardware
.
getSteckbrett
().
setzeVertauschung
(
verbindung
.
charAt
(
0
),
verbindung
.
charAt
(
1
));
public
boolean
setSteckbrett
(
int
port
,
String
verbindung
)
{
return
this
.
hardware
.
getSteckbrett
().
setzeVertauschung
(
port
,
verbindung
.
charAt
(
0
),
verbindung
.
charAt
(
1
));
}
/**
* Prüft ob der Port auf den das Kabel gesteckt werden soll, noch frei ist.
* <p>
* TODO: Prüfen ob im aktuellen Feld bereits zwei Buchstaben stehen, wenn ja, nach erfolg dieser Funktion,
* setSteckbrett ausführen mit beiden Buchstaben als String
*
* @param buchstabe : char : Der zuletzt eingegebene Buchstabe
* @return boolean : Wenn der Buchstabe nicht vorhanden ist, wird true zurückgegeben, ansonsten false
*/
public
boolean
pruefeSteckbrettPort
(
char
buchstabe
)
{
return
t
rue
;
return
t
his
.
hardware
.
getSteckbrett
().
ueberpruefeVertauschungen
(
buchstabe
)
;
}
/**
...
...
@@ -439,14 +438,29 @@ public class Codierer {
return
nachricht
[
2
];
}
/**
* Gibt die Ringstellungen aus dem Codebuch zurück
*
* @return int[] : Array mit den Ringstellungen der drei eingesetzten Walzen
*/
public
int
[]
fetchRingstellung
()
{
return
this
.
codebuch
.
getRingstellung
();
}
/**
* Gibt die Walzennummer aus dem Codebuch zurück
*
* @return int[] : Array mit den Nummern der drei eingesetzten Walzen
*/
public
int
[]
getchWalzenNr
()
{
return
this
.
codebuch
.
getWalzenlage
();
}
/**
* Gibt die Steckverbindungen aus dem Codebuch zurück
*
* @return char[][] : Array mit den gesteckten Verbindungen im Steckbrett
*/
public
char
[][]
getSteckverbindungen
()
{
return
this
.
codebuch
.
getSteckverbindung
();
}
...
...
This diff is collapsed.
Click to expand it.
src/main/java/projekt/enigma/model/Steckbrett.java
+
138
−
103
View file @
298c09cd
...
...
@@ -9,108 +9,143 @@ package projekt.enigma.model;
*/
public
class
Steckbrett
{
/**
* zaehler: Int, der als Laufvariable genutzt wird
*/
private
int
zaehler
;
/**
* orginalBuchstaben: Character-Array, der jeweils den ersten zu vertauschenden Buchstaben enthält
*/
private
Character
[]
orginalBuchstaben
;
/**
* getauschteBuchstaben: Character-Array, der jeweils den zweiten zu vertauschenden Buchstaben enthält
*/
private
Character
[]
getauschteBuchstaben
;
/**
* Konstruktor Steckbrett
* <br>
* Erzeugt zwei Charakter-Arrays (orginalBuchstaben und getauschteBuchstaben) der Länge 10.
*/
public
Steckbrett
()
{
orginalBuchstaben
=
new
Character
[
10
];
getauschteBuchstaben
=
new
Character
[
10
];
}
/**
* TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ?????
* TODO: Überprüfe Vertauschungen für jeden Buchstaben aufrufen
* Funktion setzeVertauschung
* <br>
* Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) übergeben.
* buchstabe1 wird in das Character-Array orginalBuchstaben geschrieben.
* buchstabe2 wird in das Character-Array getauschteBuchstaben geschrieben.
* Anschließend wird die Funktion ueberpruefeVertauschungen aufgerufen.
*
* @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll.
* @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll.
* @return ueberpruefeVertauschungen(): Ueberprueft ob die Vertauschungen zulaessig sind.
*/
public
boolean
setzeVertauschung
(
char
buchstabe1
,
char
buchstabe2
)
{
if
(
zaehler
<
orginalBuchstaben
.
length
)
{
orginalBuchstaben
[
zaehler
]
=
buchstabe1
;
getauschteBuchstaben
[
zaehler
++]
=
buchstabe2
;
}
else
{
System
.
err
.
println
(
"Zu viele Vertauschungen angegeben!"
);
}
return
ueberpruefeVertauschungen
();
}
/**
* TODO: Fehlerfall kommentieren, bzw. Exceptions werfen ?????
* TODO: Buchstabe zum überpüfen übergeben
* Funktion ueberpruefeVertauschungen
* <br>
* Die Funktion ueberpruefeVertauschungen prueft ob die Buchstabenvertauschung zulaessig ist.
* Eine Buchstabenvertauschung ist zulaessig, wenn keine Dopplungen der zu vertauschenden Buchstaben auftritt
* (ein Buchstabe nicht mehrmals vertauscht wird).
*
* @return boolean : result : Flag, der die Zulassigkeit der Vertauschungen zurueckgibt.
*/
public
boolean
ueberpruefeVertauschungen
()
{
boolean
result
=
true
;
/*Es wird geprüft:
1. Ob im Array originalBuchstaben Dopplungen enthalten sind.
2. Ob im Array originalBuchstaben Buchstaben im Array getauschteBuchstaben enthalten sind.
3. Ob im Array getauschteBuchstaben Dopplungen enthalten sind.
Tritt einer der Fälle ein, erfolgt eine Konsolenausgabe und der Flag wird auf false gesetzt.
*/
for
(
int
n
=
0
;
n
<
orginalBuchstaben
.
length
;
n
++)
{
if
(
orginalBuchstaben
.
equals
(
orginalBuchstaben
[
n
])
||
getauschteBuchstaben
.
equals
(
orginalBuchstaben
[
n
])
||
getauschteBuchstaben
.
equals
(
getauschteBuchstaben
[
n
]))
{
System
.
err
.
println
(
"Vertauschungen enthalten unzulässige Dopplungen"
);
result
=
false
;
}
}
return
result
;
}
/**
* Funktion codiere
* <br>
* Die Funktion codiere tauscht den uebergebenen Character buchstabe mit dem zu tauschenden Character aus.
*
* @param buchstabe : Character : Buchstabe der codiert werden soll.
* @return buchstabe : Character : Codierter Buchstabe.
*/
public
char
codiere
(
Character
buchstabe
)
{
for
(
int
index
=
0
;
index
<
getauschteBuchstaben
.
length
;
index
++)
{
if
(
buchstabe
.
equals
(
getauschteBuchstaben
[
index
]))
{
buchstabe
=
orginalBuchstaben
[
index
];
}
else
if
(
buchstabe
.
equals
(
orginalBuchstaben
[
index
]))
{
buchstabe
=
getauschteBuchstaben
[
index
];
}
}
return
buchstabe
;
}
/**
* zaehler: Int, der als Laufvariable genutzt wird
*/
private
int
zaehler
;
/**
* orginalBuchstaben: Character-Array, der jeweils den ersten zu vertauschenden Buchstaben enthält
*/
private
Character
[]
orginalBuchstaben
;
/**
* getauschteBuchstaben: Character-Array, der jeweils den zweiten zu vertauschenden Buchstaben enthält
*/
private
Character
[]
getauschteBuchstaben
;
/**
* Konstruktor Steckbrett
* <br>
* Erzeugt zwei Charakter-Arrays (orginalBuchstaben und getauschteBuchstaben) der Länge 10.
*/
public
Steckbrett
()
{
orginalBuchstaben
=
new
Character
[
10
];
getauschteBuchstaben
=
new
Character
[
10
];
}
/**
* Funktion setzeVertauschung
* <br>
* Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) übergeben.
* Zuerst wird überprüft ob einer der beiden Buchstaben bereits enthalten ist, was unzulässig wäre.
* <br>
* Anschließend wird:
* <p>
* buchstabe1 in das Array orginalBuchstaben auf den nächsten, freien Index geschrieben
* buchstabe2 in das Array getauschteBuchstaben auf den nächsten, freien Index geschrieben.
* </p>
*
* @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll.
* @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll.
* @return boolean : Wenn die Vertauschung zulässig ist, true, ansonsten false
*/
public
boolean
setzeVertauschung
(
char
buchstabe1
,
char
buchstabe2
)
{
if
(!
ueberpruefeVertauschungen
(
buchstabe1
)
&&
!
ueberpruefeVertauschungen
(
buchstabe2
))
{
return
false
;
}
else
{
if
(
zaehler
<
orginalBuchstaben
.
length
)
{
orginalBuchstaben
[
zaehler
]
=
buchstabe1
;
getauschteBuchstaben
[
zaehler
++]
=
buchstabe2
;
return
true
;
}
else
{
return
false
;
}
}
}
/**
* Funktion setzeVertauschung mit angabe eines Ports von 1 - 10
* <br>
* Der Funktion setzeVertauschung werden 2 Buchstaben (buchstabe1 und buchstabe2) sowie der Port übergeben.
* Zuerst wird überprüft ob einer der beiden Buchstaben bereits enthalten ist, was unzulässig wäre.
* <br>
* Anschließend wird:
* <p>
* buchstabe1 in das Array orginalBuchstaben auf den Index (steckbrettPort) geschrieben
* buchstabe2 in das Array getauschteBuchstaben auf den Index (steckbrettPort) geschrieben.
* </p>
*
* @param buchstabe1 : char: Gibt den ersten Buchstaben an, der getauscht werden soll.
* @param buchstabe2 : char: gibt den zweiten Buchstaben an, mit dem der erste getauscht werden soll.
* @return boolean : Wenn die Vertauschung zulässig ist, true, ansonsten false
*/
public
boolean
setzeVertauschung
(
int
steckbrettPort
,
char
buchstabe1
,
char
buchstabe2
)
{
if
(!
ueberpruefeVertauschungen
(
buchstabe1
)
&&
!
ueberpruefeVertauschungen
(
buchstabe2
))
{
return
false
;
}
else
{
orginalBuchstaben
[
steckbrettPort
-
1
]
=
buchstabe1
;
getauschteBuchstaben
[
steckbrettPort
-
1
]
=
buchstabe2
;
return
true
;
}
}
/**
* Funktion ueberpruefeVertauschungen
* <br>
* Die Funktion ueberpruefeVertauschungen prueft ob der übergebene Buchstabe bereits in den beiden Arrays
* (orginalBuchstaben) und (getauschteBuchstaben) vorhanden ist.
* Eine Buchstabenvertauschung ist zulaessig, wenn keine Dopplungen der zu vertauschenden Buchstaben auftritt
* (ein Buchstabe nicht mehrmals vertauscht wird).
*
* @return boolean : Wenn false, dann darf der Buchstabe genutzt werden.
* Wenn er schon vorhanden ist, wird true zurück gegeben
*/
public
boolean
ueberpruefeVertauschungen
(
char
buchstabe
)
{
boolean
result
=
false
;
for
(
char
c
:
orginalBuchstaben
)
{
if
(
c
==
buchstabe
)
{
result
=
true
;
break
;
}
}
for
(
char
c
:
getauschteBuchstaben
)
{
if
(
c
==
buchstabe
)
{
result
=
true
;
break
;
}
}
return
result
;
}
/**
* Funktion codiere
* <br>
* Die Funktion codiere tauscht den uebergebenen Character buchstabe mit dem zu tauschenden Character aus.
*
* @param buchstabe : Character : Buchstabe der codiert werden soll.
* @return buchstabe : Character : Codierter Buchstabe.
*/
public
char
codiere
(
Character
buchstabe
)
{
for
(
int
index
=
0
;
index
<
getauschteBuchstaben
.
length
;
index
++)
{
if
(
buchstabe
.
equals
(
getauschteBuchstaben
[
index
]))
{
buchstabe
=
orginalBuchstaben
[
index
];
}
else
if
(
buchstabe
.
equals
(
orginalBuchstaben
[
index
]))
{
buchstabe
=
getauschteBuchstaben
[
index
];
}
}
return
buchstabe
;
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment