can someone explain why my caesar solving algorithm works for every letter except of 'Z' cause 'Z' should turn to 'O' but it turns to 'arrow down'
#include<iostream>
#include<string>
void unsolve(std::string nachricht);
int offset = 0;
int main()
{
std::string nachricht
unsolve(nachricht);
return 0;
}
void unsolve(std::string nachricht){
int highest = 0;
int index = 0;
int letters[24] = {};
for (int i = 0; i < nachricht.size() ; i++)
{
if (nachricht[i] >= 'A' && nachricht[i] <= 'Z')
{
nachricht[i] = nachricht[i] - 'A';
letters[nachricht[i]]++;
}
}
for (int i = 0; i < sizeof(letters)/sizeof(letters[1]); i++)
{
if(letters[i] > highest){
highest = letters[i];
index = i;}
}
for (int i = 0; i < nachricht.size(); i++)
{
if (nachricht[i] >= 0 && nachricht[i] <= 24)
{
nachricht[i] = nachricht[i] + 'A';
}
if(nachricht[i] >= 76 && nachricht[i] <= 90) {
nachricht[i] = nachricht[i] - (index - 4);
}
else if(nachricht[i] >= 65 && nachricht[i] <= 75)
{
nachricht[i] = nachricht[i] + 15;
}
}
}```