03. juni 2003 - 18:57
Der er
15 kommentarer og 1 løsning
Replace ting i C++
Hey Hvordan replacer man i c++, i console applikation? F.eks. hvis man har en char variabel, hvor der står "hej" i, vil jeg gerne have c++ til at oversætte hvert bogstav. F.eks. h skal den oversætte til J, E til k og j til D. Ved godt det ikke gi'r nogen mening, men det skal bare bruges til et projekt jeg er i gang med.. På forhånd tak :o) MVH ANders
Annonceindlæg fra DE-CIX
Det lyder som noget simpelt kryptering ! Nemmeste løsning: lav et array af char med 256 elementer og fyld værdier i for(int i=0;i<len;i++) s2[i]=tabel[(unsigned char)s1[i]];
Takker, men vil du ikke lave et simpelt eksempel, med det?? Hvor du laver variablen osv..
Det er fordi jeg vil lave det med cin som input, og så oversætter computeren den tekst, man indtastede til f.eks. h til j, e til k j til D osv osv..
Hvordan laver jeg videre på din for løkke, så jeg selv kan angive hvilke tegn, hvert bogstav skal omdannes til?
#include <iostream> #include <cstring> using namespace std; int main() { char tabel[256]; for(int i=0;i<256;i++) tabel[i]=(i+2)%256; char s1[100]; cin >> s1; char s2[100]; for(int i=0;i<strlen(s1);i++) s2[i]=tabel[(unsigned char)s1[i]]; s2[strlen(s1)]='\0'; cout << s2; } med input: abc giver output: cde
Altså jeg skal lave et array, med alle de tegn, som skal oversættes, og så et mere, til de tegn som de skal oversættes til??
Takker, jeg tester lige! (Min kommentar kom lidt for sent :o))
Det sætter du op i konverterimgs tabellen. I ovenstående eksempel bruger jeg kun +2 d.v.s. at bogstaver rykkes 2 tegn frem i alfabetet. Men du kan manuelt sætte en tabel op med en helt tilfældig rækkefølge.
03. juni 2003 - 19:15
#10
ok, men hvis jeg trykker abs, og trykker <enter>, forsvinder programmet bare..
03. juni 2003 - 19:17
#11
#include <iostream> #include <cstring> using namespace std; int main() { char tabel[256]; for(int i=0;i<256;i++) tabel[i]=(i+2)%256; char s1[100]; cin >> s1; char s2[100]; for(int i=0;i<strlen(s1);i++) s2[i]=tabel[(unsigned char)s1[i]]; s2[strlen(s1)]='\0'; cout << s2 << endl; }
03. juni 2003 - 19:17
#12
Nogle operativ-systemer og compilere kræver den endl - sorry !
03. juni 2003 - 19:19
#13
Det virker altså stadig ikke :o( Jeg taster abc, og vinduet forsvinder med det samme..
03. juni 2003 - 19:20
#14
Ups. Lad mig gætte - du bruger dev-cpp ?
03. juni 2003 - 19:21
#15
#include <iostream> #include <cstring> #include <cstdlib> using namespace std; int main() { char tabel[256]; for(int i=0;i<256;i++) tabel[i]=(i+2)%256; char s1[100]; cin >> s1; char s2[100]; for(int i=0;i<strlen(s1);i++) s2[i]=tabel[(unsigned char)s1[i]]; s2[strlen(s1)]='\0'; cout << s2 << endl; system("PAUSE"); }
03. juni 2003 - 19:22
#16
Hvordan kunne du dog gætte det?? *G* Takker! Det virker jo perfekt!!
Kurser inden for grundlæggende programmering