Cześć. To mój pierwszy post więc nie oceniajcie za surowo :)
Mam do zrobienia projekt Szyfrujący/Deszyfrujący (ten sam algorytm) Enigmą(wielkich liter alfabetu). Nie wiem co jest powodem złego szyfrowania 2 liter. 'F' oraz 'U'.
Powinien szyfrować tak:
A -> U -> A
T - > F -> T
a robi tak:
U -> T -> F -> C
'C' szyfruje już poprawnie w 'J'.
Wrzucam program gotowy do skompilowania z usuniętymi zbędnymi fragmentami. Bląd występuje w tym fragmencie.
#include <stdio.h>
#include <stdlib.h>
char alfabet[26]= {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
char P1[26]= {"BDFHJLCPRTXVZNYEIWGAKMUSQO"};
char P2[26]= {"AJDKSIRUXBLHWTMCQGZNPYFVOE"};
char P3[26]= {"EKMFLGDQVZNTOWYHXUSPAIBRCJ"};
char bebenB[26]= {"YRUHQSLDPXNGOKMIEBFZCWVJAT"};
char dobebna (int n, char litera, char tab[]);
char odbebna(char litera, char tab[], char tab2[]);
int main()
{
int i,n;
char litera;
char zdanie[]={"UFTA"};
int rozmiar =sizeof zdanie;
char wynik[rozmiar];
for (i=0;i<=rozmiar-1;i++)
{
litera=zdanie[i];
if (litera != ' ')
{
litera=dobebna(n, litera, P1);
litera=dobebna(n, litera, P2);
litera=dobebna(n, litera, P3);
litera=dobebna(n, litera, bebenB);
n = litera - 65;
litera = alfabet[n];
litera= odbebna(litera,P3,alfabet);
litera= odbebna(litera,P2,alfabet);
litera= odbebna(litera,P1,alfabet);
printf("%c",litera);
wynik[i]=litera;
}
else
{printf(" ");
wynik[i]=litera;}
}
printf("\nWynik z tablicy: %s", wynik);
return 0;
}
char dobebna (int n, char litera, char tab[]){
n = litera - 65;
litera = tab[n];
return litera;
}
char odbebna(char litera, char tab[], char tab2[]){
int od=0;
do
od++;
while(tab[od]!=litera);
{
litera= tab2[od];
}
return litera;
}