Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 08.08.2007, 22:16 Titel: "nutzloser Schiffre" |
|
|
Leicht zu knacken und für mich nutzlos... aber ein kleiner programmier erfolg:
Code: | declare sub decoder
declare sub encoder
dim shared as integer a,laenge, laenge2, auswahl
dim shared as string unverschluesselt, unverschluesselt2, verschluesselt, verschluesselt2, z , y, unverschluesselt3, unverschluesselt4
Input "Bitte einen Text eingeben: ", unverschluesselt
Print "der 2te text muss genauso lang sein wie der erste!!"
Input "Bitte einen zweiten Text eingeben: ", unverschluesselt2
decoder
encoder
sub decoder
laenge2 = len (unverschluesselt) + 1
laenge = len (unverschluesselt2) + 1
do
laenge2 -= 1
z = mid (unverschluesselt, laenge2, 1)
verschluesselt += z
laenge -= 1
y = mid (unverschluesselt2, laenge, 1)
verschluesselt += y
loop until laenge2 = 0
print verschluesselt
end sub
sub encoder
laenge2 = len (verschluesselt) * 2
do
laenge2 -= 2
z = mid (verschluesselt, laenge2 + 1, 1)
unverschluesselt3 += z
loop until laenge2 = 0
Print unverschluesselt3
end sub
sleep |
prinzip:
bsp: Text1 = Mark
Text2 = 1234
ausgabe = k4r3a2m1
der Decoder filtert den text1 dann wieder heraus, ergebnis:
Mark
hoffe ihr könnt mir dazu feedback geben (vorallem vom Programmierstil her) _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Progger_X Mr. Lagg
Anmeldungsdatum: 24.11.2004 Beiträge: 784 Wohnort: Leipzig
|
Verfasst am: 08.08.2007, 22:23 Titel: |
|
|
Äh...kein DIM SHARED nehmen, sondern Parameter übergeben, und auch zurückgeben, das macht das ganze variabler und einsatzfähiger. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 08.08.2007, 22:27 Titel: |
|
|
Das mit dem Übergeben von varis hab ich nich so ganz gerallt und mein Opa sagt immer: "man kann ruhig dumm sein, man muss sich nur zu helfen wissen"
genauso wie ich daran gescheitert bin in eine meiner anwendungen externe subs einzubauen... _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 08.08.2007, 22:38 Titel: |
|
|
Code: | declare sub decoder(unverschluesselt1 as string, unverschluesselt2 as string)
[...]
'Funktionsaufruf
decoder(unverschluesselt, unverschluesselt2)
[...]
'Definition der Funktion
sub decoder(unverschluesselt1 as string, unverschluesselt2 as string) |
Sollte eigentlich funktionieren. Für encoder dann genauso.
Du könntest auch statt Subs Funktionen definieren, die den verschlüsselten/entschlüsselten Text als Funktionswert zurückgeben (wäre auch die Voraussetzung dafür, dass du den verschlüsselten Text ohne DIM SHARED an encoder übergeben kannst.
Statt den DO...LOOP Schleifen würde ich eher FOR...NEXT (STEP -1 bzw. -2) nehmen, aber so geht es natürlich auch. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 08.08.2007, 22:42 Titel: |
|
|
was spricht denn gegen Do...Loop?
Ich mag For..next ehrlich gesagt nicht sehr
ich hab mir das arbeiten mit zählern (in diesem fall laenge und laenge2)
angewöhnt
werd mir morgen mal angucken was ich noch verbessern könnte... vorallem stört es mich das text1 und text2 gleichlang sein müssen, da sonst der rest von text2 nur hinten dran gehängt wird... naja _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.08.2007, 23:01 Titel: |
|
|
hehe... im info-unterricht haben wir (nat. mich ausgenommen ) zuerst while-schleifen, dann for kennengelernt. gibt immer noch einige, die lieber while nehmen, warum versteh ich auch nicht. Bei while kannst du mal ganz schnell das inkrementieren der zählvariable (i+=1) vergessen, oder ungültige start- bzw. endwerte einsetzen. FOR ist dagegen nicht so "anfällig" gegenüber fehlern. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 08.08.2007, 23:21 Titel: |
|
|
Das mit den ungültigen Start- und Endwerten ist übrigens eine praktische Sache. Ein
Code: | FOR I=5 TO 4 [...] NEXT |
wird problemlos abgefangen. Die Schleife wird nicht durchlaufen, und es ist keine Sicherheitsabfrage nötig.
DO [...] LOOP in Zusammenhang mit einer Zählvariable nutze ich eigentlich nur, wenn die Variable nicht gleichmäßig weiterzählt. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 09.08.2007, 03:09 Titel: |
|
|
While/Wend bzw Do/Loop als zaehl/verarbeitungs schleife sind meistens nur dann sinnvoll wenn der Endwert Variabel und abhaengig von der verarbeitung ist... _________________
 |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 09.08.2007, 13:50 Titel: |
|
|
Eternal Pain : ist er ja bei mir, schliesslich kommt je nach text was anderes bei raus, außerdem muss ich die eingabe zerhacken, etwas einfügen und umgedreht wieder zusammensetzen... _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 09.08.2007, 17:20 Titel: |
|
|
Aber deine Zählvariable läuft schön gleichmäßig im Einer oder Zweierschritt runter bis 0. Innerhalb der Schleife ist da nichts variabel. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 09.08.2007, 18:05 Titel: |
|
|
Stimmt, aber ich bin den umgang mit do...loop gewöhnt und geübt.. mit for next komm ich irgentwie nicht zurecht  _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 09.08.2007, 18:20 Titel: |
|
|
Ist ja nicht Pflicht, trotzdem mal der Code zum Nachvollziehen:
Code: | sub decoder
laenge2 = len (unverschluesselt) + 1
laenge = len (unverschluesselt2) + 1
for i=laenge2 to 0 step - 1
z = mid (unverschluesselt, i, 1)
verschluesselt += z
laenge -= 1
y = mid (unverschluesselt2, laenge, 1)
verschluesselt += y
next
print verschluesselt
end sub |
Ist genau dasselbe wie bei dir, nur heißt die Zählvariable jetzt i (einfach nur, weil laenge2 schon vergeben ist), und in der vierten Zeile wird Startwert, Endwert und Schrittgröße gleichzeitig festgelegt.
Unter Umständen geht unterer Code auch, musst du testen:
Code: | sub decoder
laenge = len (unverschluesselt2) + 1
for laenge2 = len(unverschluesselt)+1 to 0 step - 1
z = mid (unverschluesselt, laenge2, 1)
verschluesselt += z
laenge -= 1
y = mid (unverschluesselt2, laenge, 1)
verschluesselt += y
next
print verschluesselt
end sub |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 09.08.2007, 18:35 Titel: |
|
|
nemored hat Folgendes geschrieben: | Code: | sub decoder
laenge = len (unverschluesselt2) + 1
for laenge2 = len(unverschluesselt)-1 to 0 step - 1
verschluesselt += Chr (unverschluesselt[laenge2-1])
laenge -= 1
verschluesselt += Chr (unverschluesselt[laenge2-1])
next
print verschluesselt
end sub |
| ..wenn du schon am Optimieren bist, dann solltest du auch auf den CPU-intensiven Mid()-Befehl verzichten, wenn es geht
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 09.08.2007, 19:36 Titel: |
|
|
Ich kann es ja einfach nicht sein lassen
Meine Variante:
Code: | Private Function Encoder(Text as String, Passwort as String) as String
dim as string EncCode,TmpCode
Dim as integer Position,Char,Char2
For Position= Len(Text) to 1 step -1
Char = ASC(Left(Passwort, Position+Len(Text) mod Len(Passwort)+1))
Char2 = ASC(MID(Text,Position,1))
TmpCode += Chr(Char2-Char)
next
Encoder = TmpCode
End function
Private Function Decode(Text as String, Passwort as String) as String
dim as string DecCode,TmpCode
Dim as integer Position,Char,Char2
For Position= Len(Text) to 1 step -1
Char = ASC(Left(Passwort, Position+Len(Text) mod Len(Passwort)+1))
Char2 = ASC(MID(Text,Position,1))
TmpCode += Chr(Char2+Char)
next
Decode = TmpCode
End function
dim as string Str1
Str1=Encoder ("Das ist der Text","passwort")
Print Decode (Str1,"passwort")
sleep |
//Edit:
Der Code ist geupdated  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 09.08.2007, 20:50 Titel: |
|
|
..ich auch nicht
Char2 = Text[Position-1] _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 09.08.2007, 21:27 Titel: |
|
|
*dumm auf den Code guck*
Hä!?! _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 09.08.2007, 22:05 Titel: |
|
|
Also, ich würd nicht lange auf den Code schauen, probiers aus, es kann nix kaputt gehen..
Du kannst auf jedes einzelne Zeichen im String zugreifen, wenn du die Schreibweise z.B. unverschlüsselt2[index] verwendest..
Wichtig ist dabei nur, daß der Ascii-Code zurückgegeben wird und nicht das Zeichen.
Außerdem beginnt der index bei 0 und geht bis Len(unverschlüsselt2)-1 _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 09.08.2007, 23:57 Titel: |
|
|
Hat sich da FreeBasic was von Perl abgeguckt?
ytwinky, du hast da mal so eine schöne schnelle Array-Zuweisung mit Hilfe einer Liste verwendet (die mich auch an Perl erinnert hat). Gibt es zu den ganzen Array-Möglichkeiten bzw. überhaupt zu den Datentypen eine gute deutschsprachige Übersicht? FreeBASIC gibt da offenbar mehr her, als ich von BASIC gewohnt bin. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 10.08.2007, 00:26 Titel: |
|
|
Du meinst die direkte Array-Initialisierung, die ich so gerne verwende, statt der doofen Data-Anweisungen oder mittels Einzelzuweisungen?
Das habe ich aus der Befehls-Referenz, woher auch sonst
(Kann auch sein, daß ich mal ins englische Wiki oder in die englische Hilfe geschielt hab)
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 10.08.2007, 00:42 Titel: |
|
|
In der (deutschsprachigen) Befehlsreferenz tue ich mir etwas schwer, weil ich da nur eine Referenz zu den Befehlen finde ... (vielleicht sollte ich erwähnen, dass ich externe Links in einer .chm nicht öffnen kann)
Das englischsprachige Manual liefert da sicher mehr Informationen, aber ich finde mich darin nicht wirklich zurecht, was nicht zuletzt an der Sprache liegen wird. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|