Эта программа предназначена для применения 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 ) );
}
РЕДАКТИРОВАТЬ: я тупо положил туда возврат, не замечая, что исправляет недостижимую ошибку.Но я до сих пор не знаю, почему с + 13 и с-13 не имеют эффекта?
РЕДАКТИРОВАТЬ: Я хотел создать программу на 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;
}
РЕДАКТИРОВАТЬ: хорошо, наконец-то исправил это, так много глупых ошибок, спасибо за помощь.Также программа должна спросить пользователя, желают ли они ввести другое значение и, если это так, повторить процесс.Есть так много способов сделать это, просто интересно, что вы, ребята, считаете лучшим способом сделать это.