| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Caesar Code Problem (C) im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo miteinander, ich habe eine Frage bezüglich eines Teils von meinem Algorithmus, welchen ich erstellt habe um einen Text ...
![]() |
| | #1 (permalink) |
| Registriert seit: 19.05.11 ![]() Likes: 0 | Anzeige Hallo miteinander, ich habe eine Frage bezüglich eines Teils von meinem Algorithmus, welchen ich erstellt habe um einen Text zu ver- bzw. entschlüsseln. Es handelt sich vermutlich um einen Teil der for-Schleife? jeder buchstabe soll um einen wert k verändert werden. also bei k=2, wird aus a dann c. das funktioniert auch, allerdings haben wir in der ausgabedatei (.txt) dann das c 15 mal hintereinander ausgegeben, obwohl eigentlich nur eins da stehen soll. Könntet ihr mir vielleicht sagen woran das liegt? Danke im Vorraus!! Geändert von degelchrizzz (19.05.11 um 15:17 Uhr) |
| | |
| | #2 (permalink) |
| Hey, Da meine Glaskugel leider in Reperatur ist (und ich deswegen auch nicht vorhersehen kann, wann sie wieder kommt) wäre es ganz hilfreich, wenn du uns den Quellcode zur Verfügung stellen würdest. Keine Angst, wir klauen schon nix =p
__________________ Be the source always with you. | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 19.05.11 ![]() Likes: 0 | Joa ein bischen ausführlicher hätte meine Problemschilderung schon sein können ! Also das Problem, welches ich zuvor hatte besteht nicht mehr, aber in meinem Programm läuft trotzdem noch nicht alles... Das hier war der Anfangsquellcode den ich gefunden hatte, allerdings besteht dieser am Ende aus vielen If/Else Schleifen und das soll nicht Sinn der Sache sein, da ich mit Strings und for-Schleifen arbeiten möchte: Code: #include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <StdAfx.h>
FILE *lesen, *schreiben;
char dateiname_eingabe[256], dateiname_ausgabe[256];
char zeichen;
int schluessel;
int main()
{
int lauf=0;
printf("\n\tProgramm zum (de)chiffrieren von Textdateien");
printf("\n\t____________________________________________\n\n");
while(lauf==0)
{
printf("\nInputdatei: ");
scanf("%s",&dateiname_eingabe);
lesen=fopen(dateiname_eingabe,"r");
if(lesen==0)
printf("\nFehler beim Oeffnen der Datei!");
else
lauf=1;
}
lauf=0;
while(lauf==0)
{
printf("\nOutputdatei: ");
scanf("%s",&dateiname_ausgabe);
schreiben=fopen(dateiname_ausgabe,"w");
if(schreiben==0)
printf("\nFehler beim Erstellen der Datei!");
else
lauf=1;
}
lauf=0;
while(lauf==0)
{
printf("\nSchluessel (zum dechiffrieren negativen Schluessel angeben): ");
scanf("%i",&schluessel);
if((schluessel<-25)||(schluessel>25))
printf("\nBitte geben Sie einen Schluessel im Bereich von -25 bis 25 an!");
else
lauf=1;
}
lauf=0;
while(zeichen!=EOF)
{
zeichen=fgetc(lesen);
//Zahlen
if((zeichen>47)&&(zeichen<58)&&((zeichen+schluessel)<58)&&((zeichen+schluessel)>47))
fputc(zeichen+schluessel, schreiben);
else if((zeichen>47)&&(zeichen<58)&&((zeichen+schluessel)>57))
fputc(zeichen+schluessel+47-57, schreiben);
else if((zeichen>47)&&(zeichen<58)&&((zeichen+schluessel)<48))
fputc(zeichen+schluessel-47+57, schreiben);
//Grossbuchstaben
else if((zeichen>64)&&(zeichen<91)&&((zeichen+schluessel)<91)&&((zeichen+schluessel)>64))
fputc(zeichen+schluessel, schreiben);
else if((zeichen>64)&&(zeichen<91)&&((zeichen+schluessel)>90))
fputc(zeichen+schluessel+64-90, schreiben);
else if((zeichen>64)&&(zeichen<91)&&((zeichen+schluessel)<65))
fputc(zeichen+schluessel-64+90, schreiben);
//Kleinbuchstaben
else if((zeichen>96)&&(zeichen<123)&&((zeichen+schluessel)<123)&&((zeichen+schluessel)>96))
fputc(zeichen+schluessel, schreiben);
else if((zeichen>96)&&(zeichen<123)&&((zeichen+schluessel)>122))
fputc(zeichen+schluessel+96-122, schreiben);
else if((zeichen>96)&&(zeichen<123)&&((zeichen+schluessel)<97))
fputc(zeichen+schluessel-96+122, schreiben);
//sonstige Zeichen
else
fputc(zeichen, schreiben);
}
fclose(lesen);
fclose(schreiben);
[/I]
Soweit bin ich dann mit dem Umschreiben und es läuft noch nicht so ganz wie ichs hätte:
[I]
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
FILE *lesen, *schreiben;
char dateiname_eingabe[256], dateiname_ausgabe[256];
char zeichen;
int schluessel,i,laenge;
int main()
{
int lauf=0;
printf("\n\tProgramm zum (de)chiffrieren von Textdateien");
printf("\n\t____________________________________________\n\n");
while(lauf==0)
{
printf("\nInputdatei: ");
scanf("%s",&dateiname_eingabe);
lesen=fopen(dateiname_eingabe,"r");
if(lesen==NULL)
printf("\nFehler beim Oeffnen der Datei!");
else
lauf=1;
}
lauf=0;
while(lauf==0)
{
printf("\nOutputdatei: ");
scanf("%s",&dateiname_ausgabe);
schreiben=fopen(dateiname_ausgabe,"w");
if(schreiben==NULL)
printf("\nFehler beim Erstellen der Datei!");
else
lauf=1;
}
lauf=0;
while(lauf==0)
{
printf("\nSchluessel (zum dechiffrieren negativen Schluessel angeben): ");
scanf("%i",&schluessel);
if((schluessel<-25)||(schluessel>25))
printf("\nBitte geben Sie einen Schluessel im Bereich von -25 bis 25 an!");
else
lauf=1;
}
lauf=0;
while(zeichen!=EOF)
{
zeichen=fgetc(lesen);
for (i=laenge; i=0; i++){
if(dateiname_eingabe[i]=='z' || dateiname_eingabe[i]=='Z'){
dateiname_eingabe[i] = 'A';
dateiname_eingabe[i] = dateiname_eingabe[i]-1;
}
dateiname_ausgabe[i]=dateiname_eingabe[i]+schluessel;
fputc(dateiname_ausgabe[i],schreiben);
}
}
fclose(lesen);
fclose(schreiben);
} Habt ihr vielleicht ein paar Verbesserungsvorschläge? Geändert von CDW (19.05.11 um 20:06 Uhr) Grund: Code Tag gesetzt |
| | |
| | #4 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | Du solltest den Quellcode in Code-Tags einbetten, dann geht die Formatierung nicht verloren und wir haben es wesentlich leichter formatierter original Quellcode Zu deinem Problem:
Code: do
{
zeichen = fgetc( lesen );
if( zeichen >= 'a' && zeichen <= 'z' )
{
zeichen += schluessel;
}
if( 'z' < zeichen )
{
zeichen -= 'z' - 'a';
}
if( zeichen < 'a' )
{
zeichen += 'z' - 'a';
}
fputc( zeichen, schreiben );
} while ( zeichen != EOF );
__________________ A good programmer looks both ways before crossing a one-way street. Die Politik kann uns nur für so dumm verkaufen, wie wir sind. |
| | |
| | #5 (permalink) |
| Registriert seit: 20.07.06 ![]() Likes: 21 | Viel einfacher ist es mit modulo Rechnung: Mach ein Array mit den Zeichen {'a', 'b', ..., 'z'} und rechne dann mit Array[(zeichen+schlüssel)%26] //edit: Du willst ja auch Sonderzeichen und Zahlen ver-und entschlüsseln, demzufolge müsstest du die Zahlen+Sonderzeichen noch zum Array hinzufügen und das ganze dann Modulo der Anzahl der Elemente im Array rechnen. Geändert von Darkslide (19.05.11 um 22:40 Uhr) |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |