AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

Ein Thema von Spytrycer · begonnen am 11. Dez 2012 · letzter Beitrag vom 16. Dez 2012
Antwort Antwort
Spytrycer

Registriert seit: 11. Dez 2012
4 Beiträge
 
Delphi 6 Personal
 
#1

SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 11. Dez 2012, 21:07
Hey Leute,

Ich habe seit kurzer Zeit ein kleines Problem.
Ich habe in der Schule Informatik Diff. Kurs, und arbeite dort mit Delphi,
Mein wissen ist noch sehr begrenzt, also habt bitte nachsicht mit mir.

Also Mein Problem:

Ich muss ein Programm schreiben bei dem der Benutzer in ein Edit Feld einen erstmal
auf 10 Zeichen begrentzten Text eingibt, und dann in 4 andere Edit-Felder 4 Positive oder
Negative Zahlen.
Hier Hake ICH:

Das Programm dürfen wir in 2 Variationen schreiben.
1. ist nicht ganz so gut, aber einfach, denn man muss keine arrays verwenden ist aber viel Schreibarbeit
2.: Die möchte ihc nun (hab 1 schon) machen. Hier muss ich aber Den im Edit feld eingegebenen Text als
Ascii Wert in die Boxen eines Arrays eingeben, da aber das Programm erweiterbar sein muss möchte ich nicht
alles einzeln schreiben.
Ich muss hierfür also eine For-Schlife nehmen, aber wie mache ich das??
David
  Mit Zitat antworten Zitat
Spytrycer

Registriert seit: 11. Dez 2012
4 Beiträge
 
Delphi 6 Personal
 
#2

AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 11. Dez 2012, 21:22
Eine Frage, ich schreib mal kurz das was bei mir bis jetzt Klappt:

type
TForm1 = class(TForm)
EdEingabe: TEdit;
EdMatrixK1: TEdit;
EdMatrixK2: TEdit;
EdMatrixK3: TEdit;
EdMatrixK4: TEdit;
EdAusgabe: TEdit;
BtVersch: TButton;
procedure BtVerschClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;


var
Form1: TForm1;
MatrixV : Integer;
MatrixK1, MatrixK2, MatrixK3, MatrixK4: Integer;
MatrixN: Integer;


implementation

{$R *.dfm}



procedure TForm1.BtVerschClick(Sender: TObject);
const Max = 10;
var i: Integer;
f: Integer;
Asc: Array[1..Max] of Integer;
Zw : Array[1..Max] of String;
begin
for i := 1 to Length(EdEingabe.Text) do
Asc[i] := ord(EdEingabe.text[i]);
MatrixK1 := StrToInt (EdMatrixK1.text);
MatrixK2 := StrToInt (EdMatrixK2.text);
MatrixK3 := StrToInt (EdMatrixK3.text);
MatrixK4 := StrToInt (EdMatrixK4.Text);
EdAusgabe.Text := IntToStr (Asc[1]);
end;




Würde das Klappen?
David
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 11. Dez 2012, 22:08
Hallo Dave,

und herzlich willkommen hier.

Ich hab' leider nicht gerafft, was das Programm machen soll.

Sowas?

Oder poste mal Variante 1.

Den Code so reinstellen (ohne die *):

[*Delphi]
[*/Delphi]
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 12. Dez 2012, 00:32
Bitte lies dir deinen Beitrag nochmal durch und versuche dich dabei in unsere Lage zu versetzen.
Dann ändere den Beitrag so, dass auch ein jeder hier verstehen kann, was du eigentlich möchtest.

Die Qualität der Rechtschreibung meine ich dabei nicht, obwohl es dann auch noch hübscher aussehen würde.

Kleiner Tipp:

Nach dem Absenden sich nochmal entspannt zurücklehnen und den Beitrag lesen.
Unter dem Beitrag ist dann ein Button um diesen nochmals zu bearbeiten
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 14. Dez 2012, 15:22
Zuerst wird man sich darüber klar, was man eigentlich machen will z.B.:

http://www.lands.de/mathe/verschl.htm

Dann bestimmt man welche Parameter nötig sind, welche Rückgabewerte man erwartet und trennt die Funktion von der Oberfläche:
Delphi-Quellcode:
procedure TForm1.BtVerschClick(Sender: TObject);
begin
  EdAusgabe.Text := FunktionsNameDerBeschreibtWasGetanWird(
    EdEingabe.Text,
    StrToInt(EdMatrixK1.Text),
    StrToInt(EdMatrixK2.Text),
    StrToInt(EdMatrixK3.Text),
    StrToInt(EdMatrixK4.Text));
end;

function FunktionsNameDerBeschreibtWasGetanWird(AValue: string; MatrixK1, MatrixK2, MatrixK3, MatrixK4: Integer): string;
var
  MSource: array of array[0..1] of Integer; // 2 Zeilen, beliebige Anzahl Spalten
  n, nMax, x, y: Integer;
begin
  {Anzahl Spalten der Ausgangsmatrix bestimmen}
  nMax := Length(AValue);
  SetLength(MSource, (nMax + 1) div 2);

  {Ausgangsmatrix füllen}
  n := 1;
  for x := 0 to High(MSource) do
  begin
    for y := 0 to 1 do
    begin
      if n <= nMax then
        MSource[x,y] := Ord(AValue[n])
      else
        MSource[x,y] := 30;
      Inc(n);
    end;
  end;
            
  {...}

end;
  Mit Zitat antworten Zitat
Spytrycer

Registriert seit: 11. Dez 2012
4 Beiträge
 
Delphi 6 Personal
 
#6

AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 16. Dez 2012, 12:22
@ Sir Rufo

Danke, das programm soll so in etwa das leisten. Also die
Ascii werte eines Zeichens mit einer Verschlüsselungsmatrix Verschlüsseln etwa so:

MatrixK1 MatrixK2 Nachricht(Asciiwerte) div2 Versch werte
* =
MatrixK3 MatrixK4 Nachricht(Asciiwerte) div2 Versch werte

KLARTEXT:

wenn mann KK eingibt und als MatrixK werte 1,2,3,4 sieht das 1 Dimensional so aus

1 * 75(K) + 2 * 75(K) = Versch1
3 * 75(K2) + 4 * 75(K2) = versch2

VerschString := IntToStr (Versch1)+(Versch2) // das ganze nur halt wenn versch ein array ist, und so mit nur einem versch
// und als for-Variabel

for i := Length(EdEingabe.text) do
Verschwert := (Verschwert) + (Versch[i]);
;

Klar?





habs jetzt geschafft zum glück auch noch anders zu lösen, hier die lösung:


Delphi-Quellcode:
procedure TForm1.BtVerschClick(Sender: TObject);
const Max = 10;

var i: Integer;
     f: Integer;
     ff: Integer;
     gg: Integer;
     h: Integer;
     Asc: Array[1..Max] of Integer;
     Zw : array[1..Max] of String;
     MatrixV : array[1..Max] of Integer;
     g : integer;
       MatrixK1, MatrixK2, MatrixK3, MatrixK4: Integer;
  MatrixN: Integer;
  Ausgabe: String;

     begin
try
Ausgabe := '';



MatrixK1 := StrToInt (EdMatrixK1.text);
if MatrixK1 = 0 then
showmessage ('MatrixK1 darf nicht 0 sein!');

MatrixK2 := StrToInt (EdMatrixK2.text);
if MatrixK2 = 0 then
showmessage ('MatrixK2 darf nicht 0 sein!');

MatrixK3 := StrToInt (EdMatrixK3.text);
if MatrixK3 = 0 then
showmessage ('MatrixK3 darf nicht 0 sein!');

MatrixK4 := StrToInt (EdMatrixK4.Text);
if MatrixK4 = 0 then
showmessage ('MatrixK4 darf nicht 0 sein!');


for i := 1 to Length(EdEingabe.Text) do
Asc[i] := ord(EdEingabe.text[i]);
;
for f := 1 to Length(EdEingabe.Text) div 2 do
MatrixV[f] := (MatrixK1 * Asc[f]) + (MatrixK2 * Asc[f]);
;
for g := 1 to length(EdEingabe.text) div 2 do
Zw[g] := IntToStr(MatrixV[g]);
;
for ff := Length(EdEingabe.text) div 2 to Length(EdEingabe.Text) do
MatrixV[ff] := (MatrixK4 * Asc[ff]) + (MatrixK4 * Asc[ff]);
;
for gg := Length(EdEingabe.text) div 2 to Length(EdEingabe.Text) do
Zw[gg] := IntToStr(MatrixV[gg])
;
for h := 1 to length(EdEingabe.text) do
Ausgabe := (Ausgabe) + (Zw[h]) + (' ');
;
if MatrixK1 = 0 then
EdVersch.Text := ''
else
if MatrixK2 = 0 then
EdVersch.Text := ''
else
if MatrixK3 = 0 then
EdVersch.Text := ''
else
if MatrixK4 = 0 then
EdVersch.Text := ''
else
EdVersch.Text := (Ausgabe);



except
showmessage ('Fehler bitte nur Buchstaben eingeben');
end;
end;




Jetzt habe ich nurnoch das Problem, das ich nun das was herauskommt z.B.

|17812 324 241242 212 |
Jetzt entschlüsseln will.

Dazu muss ich jetzt die Zahl bis einschließlich dem Leerzeichens in ein array zuweisen.
Aber wie ich das mache weiß ich nicht.
So viel hab ich schon:

Delphi-Quellcode:
procedure TForm1.BtEntClick(Sender: TObject);
const max = 10;
var Zw: Array[1..max] of String;
    Zw2: Array[1..max] of String;
    Asc2: Array[1..max] of Integer;
    Asc: Array[1..max] of Integer;
    i,g,h,ii: Integer;
    Ausgabe: String;
begin

for i := 1 to length(EdVersch.Text) do
Zw[i] := (EdVErsch.Text[i]); //hier der String hier muss das so reingeschrieben werden.
;



EdEnt.text := (Zw[1]); //Probe
end;
David

Geändert von Spytrycer (16. Dez 2012 um 14:32 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 16. Dez 2012, 20:13
Das mit der Matrix hat euer Lehrer wohl etwas anders gemeint, du verwendest ja gar keine?

Delphi-Quellcode:
type
  TChiffreMatrix = array [1..2, 1..2] of double; // falls Array bei 1 beginnen soll
  TTextMatrix = array [1..2, 1..5] of double; // für max. 10 Zeichen

 ...

var
  Chiffre, InversChiffre: TChiffreMatrix;
  Text, Decrypt, Encrypt: TTextMatrix;
  S1, S2: string;
Und dann eben die Matritzenmultiplikationen durchführen:

Delphi-Quellcode:
  S1 := 'Test';

  // Chiffre setzen
  Chiffre := ...

  // Text in Matrix umwandeln
  Text := TextToMatrix(S1);

  // Verschlüsseln
  Encrypt := MultAB(Chiffre, Text);

  // Entschlüsseln
  InversChiffre := MatrixInversion(Chiffre);
  Decrypt := MultAB(InversChiffre, Encrypt);

  // Matrix in Text umwandeln
  S2 := MatrixToText(Decrypt);

  // Kontrolle
  S1 = S2 ?
  Text = Decrypt ?
  Mit Zitat antworten Zitat
Spytrycer

Registriert seit: 11. Dez 2012
4 Beiträge
 
Delphi 6 Personal
 
#8

AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen

  Alt 16. Dez 2012, 21:16
WOW ähm.

Das ist ein wenig zu kompliziert, und die verschlüssekung klappt bei mir.
Wass mir fehlt ist das ich halt jetzt aus der Edit komponente nur die Zahl bis einschließlich zum leerzeichen
in ein arrayfeld packe, und das leerzeichen rauslösche.
David
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz