Wpis z mikrobloga

Ktos pomoże? Nie działa mi funckja if nie wiem czemu
#include
using namespace std;
char szyfruj(string s)
{char y;
int d=s.size(),n,i,k,a,w,p=0,b;
int tab[25];
for(int i=0;ip)
{p=tab[i];
b=i;}}
y=(char)b+65;
return y;
}
int main()
{int d,k,i,g;
string s,slowo; char a,y;
cin>>d>>a>>s;
y=szyfruj(s);
k=(int)a-(int)y+1;
for(int i=0;i
  • 35
@szk6dnik: aś otrzymał sekretną wiadomość. Jest ona ciągiem wielkich liter alfabetu łacińskiego (który składa się z liter: ABCDEFGHIJKLMNOPQRSTUVWXYZ). Wie, że do jej zakodowania użyto szyfru Cezara. Jest to szyfr przesuwający kolejne litery wiadomości o określoną, stałą liczbę znaków w alfabecie. Litery z końca alfabetu stają się wówczas literami z jego początku. Dla przykładu, w wyniku zaszyfrowania wiadomości ABCEGIKMOQSUVWXYZ szyfrem Cezara z przesunięciem k=4, otrzymuje się wiadomość EFGIKMOQSUWYZABCD Jaś chciałby odszyfrować wiadomość.
@Skrrrrt: Teraz wiadomo o co chodzi. Przykładowe rozwiązanie może wyglądać tak. Zadanie składa się z dwóch części. Piersza to napisanie funkcji, która zliczy występowanie liter w zaszyfrowanej wiadomości, wybierze tą literę która występuje najczęściej i mając informację jaka to była litera w orginalnej wiadomości obliczy przesunięcie. Druga funkcja mając zadane przesunięcie i zaszyfrowany tekst zwróci odszyfrowaną wiadomość.

int find_shift(const string& encrypted_message, char most_common_letter)
string decipher(const string& encrypted_message, int shift)
@Skrrrrt: Nie chce mi sie analizowac, bo kod jest formatowany koszmarnie, ale 2 podejrzane miejsca (poza wyjscie za tablice, co Ci juz zwracano uwage), to:
k=(int)a-(int)y+1; - nie jestem pewien tego + 1, musialbym analizowac, co masz w funkcji wczesniej. Druga rzecz, to if(g<65) {g+26;}
tu raczej powinno byc if (g > 'Z') {g = 'A' + (g - 'Z');}