#define _crt_secure_no_warnings 1
#include <stdio.h>
#include <stdlib.h>
//課題2
int mystrlen(char s[]) {
int i;
for (i = 0; s[i] != '\0'; i++);
return i;
}
// 関数の中でtmpに対してmallocして
// そこに回文を代入してreturnで返しましょう
char* setpalindrome(char s[]) {
char* tmp;
//以下に必要な宣言を含めて書いてください
int len = mystrlen(s);
int i, j;
int left, right;
for (i = 0; i < len; i++)
{
left = i;
right = len - 1;
while (left < right) {
if (s[left] != s[right])break;
left++;
right--;
}
}
int addlen = i;
tmp
= (char*)malloc(sizeof(char) * (len
+addlen
+1)); if (tmp == NULL)
{
return 0;
}
for (j = 0; j < len; j++)
{
tmp[j] = s[j];
}
for (j = 0; j < addlen; j++)
{
tmp[len + j] = s[len - 1 - j];
}
tmp[len + addlen] = '\0';
return tmp;
}
//メイン関数はいじる必要はありません
int main() {
int i;
char nyuryoku[1024]; //入力
char* kaibun; //回文を受け取る
kaibun = setpalindrome(nyuryoku);
printf("%s\n -> %s\n", nyuryoku
, kaibun
); return 0;
}
I2RlZmluZSBfY3J0X3NlY3VyZV9ub193YXJuaW5ncyAxCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgovL+iqsumhjO+8kgppbnQgbXlzdHJsZW4oY2hhciBzW10pIHsKICAgIGludCBpOwogICAgZm9yIChpID0gMDsgc1tpXSAhPSAnXDAnOyBpKyspOwogICAgcmV0dXJuIGk7Cn0KCi8vIOmWouaVsOOBruS4reOBp3RtcOOBq+WvvuOBl+OBpm1hbGxvY+OBl+OBpgovLyDjgZ3jgZPjgavlm57mlofjgpLku6PlhaXjgZfjgaZyZXR1cm7jgafov5TjgZfjgb7jgZfjgofjgYYKY2hhciogc2V0cGFsaW5kcm9tZShjaGFyIHNbXSkgewogICAgY2hhciogdG1wOwogICAgLy/ku6XkuIvjgavlv4XopoHjgarlrqPoqIDjgpLlkKvjgoHjgabmm7jjgYTjgabjgY/jgaDjgZXjgYQKICAgIGludCBsZW4gPSBteXN0cmxlbihzKTsKICAgIGludCBpLCBqOwogICAgaW50IGxlZnQsIHJpZ2h0OwogICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQogICAgewogICAgICAgIGxlZnQgPSBpOwogICAgICAgIHJpZ2h0ID0gbGVuIC0gMTsKICAgICAgICB3aGlsZSAobGVmdCA8IHJpZ2h0KSB7CiAgICAgICAgICAgIGlmIChzW2xlZnRdICE9IHNbcmlnaHRdKWJyZWFrOwogICAgICAgICAgICBsZWZ0Kys7CiAgICAgICAgICAgIHJpZ2h0LS07CiAgICAgICAgfQogICAgfQogICAgaW50IGFkZGxlbiA9IGk7CiAgICB0bXAgPSAoY2hhciopbWFsbG9jKHNpemVvZihjaGFyKSAqIChsZW4rYWRkbGVuKzEpKTsKICAgIGlmICh0bXAgPT0gTlVMTCkKICAgIHsKICAgICAgICBwcmludGYoImVycm9yXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspCiAgICB7CiAgICAgICAgdG1wW2pdID0gc1tqXTsKICAgIH0KICAgIGZvciAoaiA9IDA7IGogPCBhZGRsZW47IGorKykKICAgIHsKICAgICAgICB0bXBbbGVuICsgal0gPSBzW2xlbiAtIDEgLSBqXTsKCiAgICB9CiAgICB0bXBbbGVuICsgYWRkbGVuXSA9ICdcMCc7CiAgICByZXR1cm4gdG1wOwogICAgCn0KCgovL+ODoeOCpOODs+mWouaVsOOBr+OBhOOBmOOCi+W/heimgeOBr+OBguOCiuOBvuOBm+OCkwppbnQgbWFpbigpIHsKICAgIGludCBpOwogICAgY2hhciBueXVyeW9rdVsxMDI0XTsgLy/lhaXlipsKICAgIGNoYXIqIGthaWJ1bjsgICAvL+WbnuaWh+OCkuWPl+OBkeWPluOCiwogICAgc2NhbmYoIiVzIiwgbnl1cnlva3UpOwogICAga2FpYnVuID0gc2V0cGFsaW5kcm9tZShueXVyeW9rdSk7CiAgICBwcmludGYoIiVzXG4gIC0+ICVzXG4iLCBueXVyeW9rdSwga2FpYnVuKTsKICAgIGZyZWUoa2FpYnVuKTsKICAgIHJldHVybiAwOwp9