Kiểm tra chuỗi đối xứng bị sai

em ko biết lỗi ở đâu mà khi chạy trên phần mềm spoj thì lại báo sai ạ, mọi người xem giúp em với ạ !

#include <stdio.h>
#include<string.h>
#define LEN 1001
void uppercase(char st[])
{
    int i=0;
    while(st[i]!='\0')
    {
        if(st[i]>='a' && st[i]<='z')
            st[i]-=32;
        i++;
    }
}
int check_symmetry(char st[])
{
    int i;
    int a=strlen(st);
    for (i=0; i<(a/2); i++)
    {
        if (st[i]==st[a-1-i])
            return 1;
    }
    return 0;
}
int main()
{
    char st[LEN];
    int t;
    scanf("%d\n",&t);
    while(t--)
    {
        gets(st);
        uppercase(st);
        if (check_symmetry(st)==1){
            printf("Symmetric\n");
        }
        if (check_symmetry(st)==0){
            printf("Asymmetric\n");
        }
    }
    return 0;
}

format code lại bạn, để vậy không ai muốn trả lời bạn đâu. Nhìn vào là ngán tới cổ rồi.
Với lại lỗi là gì. Runtime hay compile.???

2 Likes

Hình như bạn sai hàm đối xứng ấy.Thử xem code mình viết lại :
image

Bạn bị sai lỗi logic.
Trong dòng for của hàm check_symmetry, sửa lại điều kiện là

if (s[i]  != s[a - 1 - i]) {
return 0;
}

Bên ngoài sửa lại là return 1.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?