WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Simulationen

Simulationen Alles zum Thema Simulation

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 11.08.2003, 18:39   #1
Atze
Veteran
 
Registriert seit: 06.08.2002
Alter: 38
Beiträge: 363


Standard Frage an Programmierer

Hallo Programmierer. Jaja, ich weiss, wird sicherlich nicht ganz so hier her gehören aber ich würde doch gerne mal um Hilfe fragen, da ich in vielen anderen Foren nur die Antwort bekommen habe "Wer ein verschlüsselungsprogramm schreibt, der muss auch ein
Entschlüsselungsprogramm selber schreiben können." Naja, wie die Aussage schon sagt, ich habe ein grosses Problem mit meinem Entschlüsselungsprogramm. Es läuft einfach nicht richtig.


Verschlüssler:

#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

char* cencrypt(char* in, char key='5')
{
char lchar = 0;
int length = strlen(in);
char* out = new char[length+1];

for(int i=0;i<length;i++)
{
out[i] = in[i] + key + (lchar % key);
lchar = in[i];
}

out[length] = 0;
return out;
}

int main()
{
char eingabe[255] = {0};

int i = 0,x = 0,schluessel = 0;
div_t weiter;

cout<<"Codierung"<<endl;
cout<<"Bitte Ihren Text (max. 255 Zeichen) :";
cin.getline(eingabe,255);
cout << "\n Der verschluesselte Text lautet : \n\n";

char *enc = cencrypt(eingabe);

cout << enc << endl;
ofstream ofs ("converted.txt");
ofs << enc <<endl;


delete [] enc;

}



Entschlüssler:

#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;
char* cencrypt(char* in, char key='5')
{
char lchar = 0;
int length = strlen(in);
char* out = new char[length-1];

for(int i=0;i<length;i++)
{
out[i] = in[i] - key - (lchar % key); //Überall,wo ein + stand, steht jetzt ein Minus, um den Code imzurechnen.
lchar = in[i];
}

out[length] = 0;
return out;
}

int main()
{
char eingabe[255] = {0};

int i = 0,x = 0,schluessel = 0;
div_t weiter;
ifstream in ("converted.txt");
cout << "\n Der verschluesselte Text lautet : \n\n";
in.getline(eingabe,255);
char *enc = cencrypt(eingabe);

cout << enc << endl;
delete [] enc;
while ('a');
}


Bitte helft mir, sitze da nämlich schon ewig dranne.


BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE,

BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE,

BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE.
____________________________________
Der Weg vom Pils

Liebe geht durch den Magen, Pils durch die Blase

Atze ist offline   Mit Zitat antworten
Alt 11.08.2003, 20:24   #2
HJOrtmann
Hero
 
Registriert seit: 22.10.2001
Beiträge: 935


Standard

genialer Algo

ich habe wirklich keine Lust, Fehler zu suchen, aber einer ist auffällig:

in deinem Decoder setzt du deinen 'key' auf den INPUT (== gecrypteten) String, während du beim Encoden den Key auf den INPUT ( == UNgecrypteten !) String setzt - dat kann so nicht jehn...

HansJürgen
HJOrtmann ist offline   Mit Zitat antworten
Alt 12.08.2003, 11:59   #3
Atze
Veteran
 
Registriert seit: 06.08.2002
Alter: 38
Beiträge: 363


Standard

Hallo.

Vielen Dank. Leider bin ich zu dumm dafür. Ich hoffe, das mir dabei noch mal jemand helfen kann. Vielen Dank im Vorraus.


mfg Atze.
____________________________________
Der Weg vom Pils

Liebe geht durch den Magen, Pils durch die Blase

Atze ist offline   Mit Zitat antworten
Alt 12.08.2003, 12:16   #4
HansHartmann
Inventar
 
Registriert seit: 12.02.2001
Alter: 57
Beiträge: 2.908


Standard

"es läuft einfach nicht richtig" ist schon eine sehr hilfreiche Fehlerbeschreibung...
____________________________________
Bis dann,
Hans
Digital Aviation
HansHartmann ist offline   Mit Zitat antworten
Alt 12.08.2003, 13:58   #5
HJOrtmann
Hero
 
Registriert seit: 22.10.2001
Beiträge: 935


Standard

Zitat:
Vielen Dank. Leider bin ich zu dumm dafür.
öhm - na ja, was soll man da sagen - irgendwo mußt du ja den Code herhaben ?

Wenn du im Entschlüssler "lchar = in[i]" ersetzt durch "lchar = out[i]", dann hast du eine Chance, weiter zu kommen...

Hans-Jürgen
HJOrtmann ist offline   Mit Zitat antworten
Alt 12.08.2003, 14:00   #6
Atze
Veteran
 
Registriert seit: 06.08.2002
Alter: 38
Beiträge: 363


Standard

Hallo.

Ich habe es jetzt so gemacht, aber leider kommt jetzt ein Debug-Error, der im angehängten Bild zu sehen ist. Was habe ich falsch gemacht???

Vielen Dank im Vorraus.


mfg Atze.

Achja, die angehängte Fehlermeldung ist natürlich sehr aufschlussreich, findet ihr nicht???
____________________________________
Der Weg vom Pils

Liebe geht durch den Magen, Pils durch die Blase

Atze ist offline   Mit Zitat antworten
Alt 12.08.2003, 14:09   #7
Atze
Veteran
 
Registriert seit: 06.08.2002
Alter: 38
Beiträge: 363


Standard

oh, oh... Bild vergessen.
____________________________________
Der Weg vom Pils

Liebe geht durch den Magen, Pils durch die Blase

Atze ist offline   Mit Zitat antworten
Alt 12.08.2003, 15:41   #8
Cokol
Newbie
 
Registriert seit: 01.06.2000
Beiträge: 15


Standard

Die Fehlermeldung ist doch eindeutig, oder?
Sie bedeutet einfach nur, dass du auf Speicherbereiche zugreifst, die vorher nicht reserviert wurden. Du erstellst einen nullterminierten string der Länge (length -1):
char* out = new char[length-1];
und greifst aber mit:
out[length] = 0;
auf das das Element length zu.

Ändere die Zeile:
char* out = new char[length-1];
wie folgt:
char* out = new char[length+1];
dann sollte das Programm arbeiten, vorausgesetzt, du hast Hans-Jürgen's Hinweis befolgt und "lchar = in[i]" durch "lchar = out[i]" ersetzt.

Steffen
Cokol ist offline   Mit Zitat antworten
Alt 12.08.2003, 16:03   #9
HJOrtmann
Hero
 
Registriert seit: 22.10.2001
Beiträge: 935


Standard

er könnte übrigens auch im Decoder "lchar = in[i]" durch "lchar = out[i]" ersetzen, oder ?

Zusatzfrage: wird's dadurch sicherer ?

Lerneffekt: mal sehen, ob's dann genau so funktioniert

HansJürgen
HJOrtmann ist offline   Mit Zitat antworten
Alt 12.08.2003, 16:05   #10
Atze
Veteran
 
Registriert seit: 06.08.2002
Alter: 38
Beiträge: 363


Standard

Hallo.

Es hat alles prima geklappt. Weiss villeicht jemand, wie ich das mache, dass der Entschlüsseler auch Zeilenumbrüche einliest???


Danke für eure Antworten.

mfg Atze
____________________________________
Der Weg vom Pils

Liebe geht durch den Magen, Pils durch die Blase

Atze ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:33 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag