Avatar billede snuseren.dk Nybegynder
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
Avatar billede arne_v Ekspert
03. juni 2003 - 19:01 #1
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]];
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:04 #2
Takker, men vil du ikke lave et simpelt eksempel, med det?? Hvor du laver variablen osv..
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:06 #3
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..
Avatar billede arne_v Ekspert
03. juni 2003 - 19:07 #4
OK.
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:10 #5
Hvordan laver jeg videre på din for løkke, så jeg selv kan angive hvilke tegn, hvert bogstav skal omdannes til?
Avatar billede arne_v Ekspert
03. juni 2003 - 19:12 #6
#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
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:12 #7
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??
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:13 #8
Takker, jeg tester lige! (Min kommentar kom lidt for sent :o))
Avatar billede arne_v Ekspert
03. juni 2003 - 19:13 #9
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.
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:15 #10
ok, men hvis jeg trykker abs, og trykker <enter>, forsvinder programmet bare..
Avatar billede arne_v Ekspert
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;
}
Avatar billede arne_v Ekspert
03. juni 2003 - 19:17 #12
Nogle operativ-systemer og compilere kræver den endl - sorry !
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:19 #13
Det virker altså stadig ikke :o( Jeg taster abc, og vinduet forsvinder med det samme..
Avatar billede arne_v Ekspert
03. juni 2003 - 19:20 #14
Ups.

Lad mig gætte - du bruger dev-cpp ?
Avatar billede arne_v Ekspert
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");
}
Avatar billede snuseren.dk Nybegynder
03. juni 2003 - 19:22 #16
Hvordan kunne du dog gætte det?? *G* Takker! Det virker jo perfekt!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester