*Witam,
Państwa zadaniem jest napisanie programu, który będzie szyfrował i odszyfrowywał zadany tekst przy pomocy szyfru Cezara z zadanym przesunięciem.
Jest to liczba odpowiadające przesunięciu, oraz w nowej linii tekst.
W oparciu o to wejście program powinien:
Przekazać tekst do funkcji prepare, która usunie z niego znaki niealfabetyczne, zamieni polskie ogonki na odpowiadające im litery bezogoniaste i zamieni całość na małe litery. Rezultat proszę wyświetlić.
Przekazać tekst i przesunięcie do funkcji cezar, która go zaszyfruje. Rezultat proszę wyświetlić.
Przekazać zaszyfrowany tekst i przesunięcie do funkcji brutus, która to rozszyfruje. Rezultat proszę wyświetlić.*
Nie działa mi tylko funkcja "brutus". Ktoś wie jak ją naprawić
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* prepare(char *tekst)
{
int p = -1, q = 0;
while (tekst[++p] != '\0')
{
int a=tekst[p];
switch(a)
{
case -92:
tekst[p] = 65;
break;
case -91:
tekst[p] = 97;
break;
case -113:
tekst[p] = 67;
break;
case -122:
tekst[p] = 99;
break;
case -88:
tekst[p] = 69;
break;
case -87:
tekst[p] = 101;
break;
case -99:
tekst[p] = 76;
break;
case -120:
tekst[p] = 108;
break;
case -29:
tekst[p] = 78;
break;
case -28:
tekst[p] = 110;
break;
case -32:
tekst[p] = 79;
break;
case -94:
tekst[p] = 111;
break;
case -105:
tekst[p] = 83;
break;
case -104:
tekst[p] = 115;
break;
case -67:
tekst[p] = 90;
case -66:
tekst[p] = 122;
break;
case -115:
tekst[p] = 90;
break;
case -85:
tekst[p] = 122;
break;
default:
break;
}
if(tekst[p]>64 && tekst[p]<91)
{
tekst[p]=tekst[p]+32;
}
if(a>=0 && a<=64 || a>=91 && a<=96 || a>=123 && a<=255)
{}
else
{
tekst[q++] = tekst[p];
}
}
tekst[q] = '\0';
return(tekst);
}
char* cezar(char* tekst,int x)
{
if(x>26)x=x%26;
for(int i=0;i<strlen(tekst);i++)
{
if(tekst[i]>=97 && tekst[i]<=122-x) tekst[i]=tekst[i]+x;
else if(tekst[i]>=123-x && tekst[i]<=122) tekst[i]=tekst[i]-26+x;
}
return(tekst);
}
char* brutus(char* tekst, int x)
{
if(x>26)x=x%26;
for(int i=0;i<strlen(tekst);i++)
{
if(tekst[i]>=97 && tekst[i]<=122-x) tekst[i]=tekst[i]+x;
else if(tekst[i]>=123-x && tekst[i]<=122) tekst[i]=tekst[i]-26+x;
}
return(tekst);
}
int main() {
int klucz;
scanf("%d", &klucz);
char tekst[1001];
getc(stdin);
gets(tekst);
printf("%s\n\n",prepare(tekst));
printf("%s\n\n",cezar(tekst,klucz));
printf("%s\n",brutus(tekst,-klucz));
return (0);
}