program szyfrujący

0

Cześć . Musze zrobic program szyfrujący na zaliczenie semestru jednak mam z nim 2 problemy.

Treść zadania: napisać program szyfrujący wprowadzany z klawiatury tekst i zapisujący go do pliku o nazwie podanej przez użytkownika. Szyfrowanie polega na zastąpieniu wprowadzonej litery inna (zastępowanie ma byc jednoznaczne). Schemat zastępowania (np. a>b ,b>c) ma byc odczytywany z pliku KOD.txt.

Nie mam pojecia jak zrobic schemat zastępowania w pliku KOD.txt oraz jak program ma zastępować litery z alfabetu na te z pliku KOD.txt. Czy jest ktos w stanie nakierować mnie / pomoc jak to zrobic ?

0

A której części nie rozumiesz?
Plik może wyglądać np. tak:

a b
b c
c d
d e
e f
f a

Wczytujesz ten plik do map<char,char> mapa a potem samo szyfrowanie to po prostu wyciąganie z mapy zaszyfrowanych znaków dla tekstu wejściowego.

0

Przyznam szczerze ze jestem zielony z c++, ostatni raz styczność z nim mialem 3 lata temu w liceum i praktycznie nic nie pamietam, dlatego tez nie wiem o co chodzi z tym map<char,char> mapa. Mógłbyś mi to troche wyjaśnić badz podesłać jakis link który mi to wytłumaczy ?

0

Czyli z tego co zrozumiałem to ta mapa <char,char> bedzie zamieniać pierwszy char na ten drugi tak ?

0

No może też zamieniać ten drugi na ten pierwszy. ;]

0

A mógłbyś jeszcze mi powiedziec jak wczytać ten plik z szyfrem do tej mapy ?

0

Otwierasz plik. Wczytujesz linijkę z pliku. Dzielisz po spacji po środku. Dodajesz do mapy.

0

Dzieki wielkie za chęć pomocy jednak nie za bardzo rozumiem to co piszesz (tak jak mowilem znam jedynie podstawy c++), czy mógłbyś jakos łatwiej to napisać , jak dla początkującego ?

1

Nie łam sie, wykształcenie nie piwo, nie musi być pełne. Jest cała masa innych rzeczy którymi możesz się zająć. Czemu nie stolarz albo piekarz? :)

0

Kto to w ogóle wymyślił zeby na kierunku finanse i rachunkowość robic program szyfrujący na zaliczenie z TI ? ;D

0

Masz w pliku np. "ab bc cd de ..." itd.
Czyli litera a zostanie zamieniona na litere b itd.

Za pomocą http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Podstawy-obslugi-plikow/355 pobierasz z pliku wyraz po wyrazie i zapisujesz go do tablicy tak, abyś potem potrafił odczytać na jaką literkę zamienić literkę.

Następnie użytkownik wprowadza tekst, wczytujesz go za pomocą cin.getline() do bufora.
Sprawdzasz długość tekstu i potem w pętli for() edytujesz według schematu każdy napotkany znak.
Gdy już wszystko pozamieniasz Zapisujesz tekst do pliku za pomocą fstream i po kłopocie.

0
#include <fstream>
#include <iostream>
using namespace std;

const char *loadcode()
  {
   static char data[256];
   ifstream fin("KOD.txt");
   for(unsigned i=0;i<sizeof(data);++i) data[i]=i;
   for(char a,b;fin>>ws>>a>>ws>>b;) data[static_cast<unsigned char>(a)]=b;
   return data;
  }
  
char encode(char ch)
  {
   static const char *code=loadcode();
   return code[static_cast<unsigned char>(ch)];
  }

int main()
  {
   for(int ch;(ch=getchar())!=EOF;) putchar(encode(ch));
  }
0

Dziękuje bardzo za pomoc, wieczorem usiądę do pisania to wrzucę tutaj efekty tego co uda mi sie wymęczyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1