No już po prostu nie mam zielonego pojęcia, jak zdobyć więcej, niż 20 punktów .. a zadanie wydaje się trywialne ... nie wiem, o czym zapomniałem czy też nie, bo wszelkie możliwe przypadki sobie sprawdziłem, a nie ma tutaj jakoś wiele możliwości ... może ktoś podpowie co i jak - będę wdzięczny za każdą pomoc. Podrzucam swój kod:
#include <stdio.h>
#include <string.h>
int main()
{
char mod;
char polecenie[15];
char klucz[15];
char litera;
int kluczLen, i;
scanf("%s", polecenie);
if(polecenie[0] == 'D'){ // kierunek przesuniecia
mod = -1;
}
else{
mod = 1;
}
scanf("%s", klucz);
getchar(); // lapiacy znak Enter
kluczLen = strlen(klucz);
for(i = 0; i < kluczLen; i++)
klucz[i] -= '0'; // zamiana znaków na wartosci liczbowe
i = 0;
while((litera = getchar()) != EOF && litera != '\n'){
if(i == kluczLen)
i = 0;
litera += mod * klucz[i]; // przesuniecie
if(litera > 'Z')
litera -= 26;
if(litera < 'A')
litera += 26;
putchar(litera);
i++;
}
putchar(litera);
return 0;
}