私は学校の問題に取り組んでおり、13 文字を回転させるプログラムを作成する必要があります。私はプログラムを完成させましたが、いくつかの奇妙な文字に変わります。大文字も小文字も「z」まで来たら「a」に戻すようにしたいです。基本的に、オプションを AZ と az に制限したいと考えています。
while ステートメントと if ステートメントを組み合わせて試してみたところ、いくつかの if ステートメントだけで終わりました。それらが間違っていることはわかっていますが、現在の状態で実行されます。
#include <iostream>
using namespace std;
//Function Prototypes
char rot(char c);
int mylen(char c[]);
int main()
{
char in[120], out[120];
int i; // index into in
cout << "Enter text: ";
cin.getline(in,120);
while (strcmp(in, "exit"))
{
for (i = 0; i < mylen(in); i++)
{
out[i] = rot(in[i]);
}
out[i++] = '\0';
cout << out << endl;
cout << endl << "Enter some more text: ";
cin.getline(in,120);
}
return 0;
}
char rot(char c)
{
if (c >= 'a' and c <= 'z')
c = c + 13;
if (c > 'z')
c = c - 26;
else if (c >= 'A' and c <= 'Z')
c = c + 13;
if (c > 'Z')
c = c - 26;
return c;
}
int mylen(char c[])
{
int cnt = 0;
while (c[cnt] != '\0')
cnt++;
return cnt;
}
13文字を回転させ、誰かが回転したコードを入力すると、再び13文字を回転させようとしています。