![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 0 Pomógł: 0 Dołączył: 5.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam do napisania program, ktory szyfruje/deszyfruje tekst za pomoca klucza. Zarowno tekst jak i klucz podaje uzytkownik. Szyfrowanie/deszyfrowanie realizujemy za pomoca tablicy 26x26 znakow:
A B C D E F G H I J K L M N O P R S T U W X Y Z B C D E F G H I J K L M N O P R S T U W X Y Z A C D E F G H I J K L M N O P R S T U W X Y Z A B . . . Y Z A B C D E F G H I J K L M N O P R S T U W X Z A B C D E F G H I J K L M N O P R S T U W X Y Przykładowe szyfrowanie tekstu LOREM IPSUM DOLOR SIT AMET kluczem PASSWORD: 1. W przypadku gdy klucz jest krotszy od szyfrowanego tekstu, nalezy go powielic: LOREM IPSUM DOLOR SIT AMET PASSW ORDPA SSWOR DPA SSWO 2. Szyfrowanie polega na podstawieniu liter tekstu jawnego przez litery z tablicy wg zasady: a ) litera tekstu jawnego wyznacza kolumnie tablicy b ) litera klucza wyznacza wiersz Litera szyfrogramu lezy na przecieciu, przyklad: LOREM IPSUM DOLOR SIT AMET PASSW ORDPA SSWOR DPA SSWO AOJWI WGVJM VGHCI VXT SEAH 3. Deszyfracja polega na wybraniu kolumny tablicy okreslonej poprzez odpowiednia litere klucza, a nastepnie odszukanie w niej litery szyfrogramu. W ten sposob okreslona litera wiersza jest litera tekstu jawnego: PASSW ORDPA SSWOR DPA SSWO AOJWI WGVJM VGHCI VXT SEAH (np.dla pierwszego znaku : w kolumnie P szukamy A, lezy ona w wierszu L-L jest wiec poszukiwana litera) dodaje ze jestem poczatkujaca i prosze o wyrozumialosc, a to ile udalo mi sie poskladac: #include <iostream> #include <cstdlib> using namespace std; void szyfruj(char *tekst,int *klucz) { int iPrzes; for (int i=0; tekst[i] != '\0'; i++) { tekst[i] = ( tekst[i] + klucz[iPrzes] ); iPrzes ++; cout << "wpisz tekst:"; cin>>iPrzes; if(iPrzes == sizeof(klucz)) iPrzes; break; } } void deszyfruj(char *tekst,int *klucz) { int iPrzes; for (int i=0; tekst[i] != '0'; i++) { tekst[i] = ( tekst[i] - klucz[iPrzes] ); iPrzes ++; cout << "zaszyfrowany tekst:"; cin>>iPrzes; if(iPrzes == sizeof(klucz)) iPrzes; break; } } int main(){ char test[30]; int iKlucz[3] ; szyfruj(test, iKlucz); cout << test << "\n" ; deszyfruj(test, iKlucz); cout << test << "\n" ; return 0; system("pause"); } |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
A z czym dokładnie masz problem?
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 0 Pomógł: 0 Dołączył: 5.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
wiem juz ze musze stworzyc tablice dynamiczna dwuwymiarowa. teraz zastanawiam sie gdzie powinnam ja umiescic zeby dobrze dzialala. w tych dwoch petlach ?
![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
To zadanie polega na kombinowaniu, jednak potrzeba już w nim trochę tego myślenia jak program i trochę wiedzy. Nie potrzebne są tu praktycznie tablice, poczytaj lepiej o kodowaniu znaków w ANSII i rzutowaniu litery na ANSII i na odwrót.
Ostatnio robiłem podobny program do szyfrowania kluczem, jednak był on trochę mniej skomplikowany. ![]() PS: To forum dotyczy PHP i tematów webowych. Nie będę tutaj już podawać linków ale istnieje także forum dotyczące cpp... |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
Problem jest natury algorytmicznej, język nie ma znaczenia. Więc jak masz coś ciekawego to śmiało się podziel
![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Problem jest natury algorytmicznej, język nie ma znaczenia. Więc jak masz coś ciekawego to śmiało się podziel ![]() Ale przecież algorytm jest znany, kwestia przeklejenia do c++ ![]() -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
nie potrzebujesz pomocniczej tablicy, po za tym pominęłaś 2 znaki alfabetu ASCII ;p ...
poniżej masz rozwiązanie pierwszej części zadania bez pobierania tekstu i klucza z konsoli jako sposób rozwiązania, jeśli w tekście są też małe litery to ten drugi alfabet jest w tablicy znaków występuje później... dodatkowo w tym rozwiązaniu zakłada się, iż klucz składa się tylko z dużych liter alfabetu - po prostu masz zalążek działającego poprawnie kodu:
-------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 0 Pomógł: 0 Dołączył: 5.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
serdecznie dziękuję, to już bardzo dużo
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.05.2025 - 10:20 |