Эта программа предназначена для применения rot13 для ввода. Однако при компиляции я получаю предупреждения о том, что строки 20, 23, 29 не влияют на код, а строка 17 - недостижимый код. Когда что-либо вводится, оно просто продолжает программу и оставляет пустое пространство. Что не так?Код недействителен и код недоступен
int main()
{
int c;
while ((c = getchar()) != EOF)
putchar(r13(c));
return 0;
}
int r13(int c)
{
if((tolower(c) >='a' && c <='z'))
{
if((c) < 'm')
(c = c + 13);
else
{
(c = c - 13);
}
}
else
c = c;
return (isalpha(c));
}
EDIT: я тупо поставил туда вернуться, не замечая, что фиксирует недостижимую ошибку. Но я до сих пор не знаю, почему c + 13 и c-13 не имеют никакого эффекта?
EDIT: Я хотел создать программу в C, которая была кодировщиком/декодером rot13. Это оригинальный код и отлично работает. Однако я хотел преобразовать в модульный дизайн, и моя нехватка знаний привела меня к неудаче. Надеюсь, это поможет людям понять, что я пытаюсь сделать.
int main(void)
{
int c,e;
while((c=getchar())!=EOF)
{
if(c >='A' && c <='Z')
{
if((e = c + ROT) <= 'Z')
putchar(e);
else
{
e = c - ROT;
putchar(e);
}
}
else if(c >='a' && c <='z')
{
if((e= c + ROT) <= 'z')
putchar(e);
else
{
e = c - ROT;
putchar(e);
}
}
else
putchar(c);
}
return 0;
}
EDIT: хорошо, наконец, фик его, так много глупых ошибок, спасибо за помощь. Также программа должна спросить пользователя, хотят ли они ввести другое значение и, если это так, повторите этот процесс. Есть так много способов сделать это, просто интересно, что вы, ребята, думаете, это лучший способ сделать это.
действительно делают эти утверждения, '(c + 13);', '(c - 13);' и 'c;'. Я не знаю много о c, но в C# они бессмысленны. – Jodrell