000
31.03.2005, 19:54 Uhr
seanyann
|
Moins ich hab ein problem ich versuche ein prog zu scheiben das ein text codieren kann und decodieren kann.Mit der methode encode bin ich schon so weit abeit decode klappt noch nicht so ganz.Hier ist das Programm
C++: |
#include <cstdio> #include <cctype> #include <cstdlib>
/* Das Zeichen ch verschluesseln */
char encode(char ch, int l);
/* Das Zeichen ch entschluesseln */
char decode(char ch, int l);
const int N = '~' - ' ' + 1; /* Anzahl der druckbaren Zeichen */
int main(int argc, char* argv[])
/* Die Datei argv[3] wird verschluesselt, der verschluesselte Text wird in die Datei argv[4] geschrieben */
{ FILE *ein, *aus; char c ; int mode, n, keyvalue;
if (argc != 5) { printf("4 Parameter: mode key InFileNname OutFileName\n"); return 0; }
if (argv[1][0]=='e') mode = 0; /* encode */ else if (argv[1][0]=='d') mode = 1; /* decode */ else { printf("Verschluesseln oder Entschluesseln ?\n"); return 0; }
if (!(keyvalue = atoi(argv[2]))) { /* !!! */ printf("keyvalue darf nicht negativ sein!\n"); return 0; } ein = fopen(argv[3], "r"); aus = fopen(argv[4], "w"); srand(keyvalue); c = getc(ein);
while (c != EOF ) { n = rand() % N; if (mode==0) c = encode(c, n); else c = decode(c, n); putc(c, aus); c = getc(ein); } fclose(ein); fclose(aus); return 0; }
char encode(char ch, int l) { int n; if (isprint(ch)) { n = ch - ' '; n = (n + l) % N; ch = ' ' + n; } return ch; }
char decode(char ch, int l) { int n; if (isprint(ch)) { n = ch - ' '; n = (n - l)%N; ch = ' ' + n; } return ch; }
|
kann jemand mir nen vorschlag machen. Danke im voraus. seanyann
Bearbeitung von Pablo: |
Benutze die CPP Tag selber!
|
Dieser Post wurde am 31.03.2005 um 20:08 Uhr von Pablo editiert. |