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

#include<stdio.h>
#include<conio.h>
#include<string.h>
void nhapchuoi(char Chuoibatki[30])
{
	fflush(stdin);
	printf("\nNhap chuoi can kiem tra: ");
	gets(Chuoibatki);
}
void xuatchuoi(char Chuoibatki[30])
{
	printf("\n%s",Chuoibatki);
}
int CheckChuoidoixung(int a[],char Chuoibatki[30])
{
	int Dodaichuoi=strlen(Chuoibatki);
     for(int i=0;i<Dodaichuoi;i++)
	 {
		 if(a[i]!=a[Dodaichuoi-i-1]) return 0;
	 }
	 return 1;
}
void main()
{
	int a[50];
	char Chuoibatki[30];
	nhapchuoi(Chuoibatki);
	xuatchuoi(Chuoibatki);
	int k=CheckChuoidoixung(a,Chuoibatki);
	if(k==0) printf("no");
	if(k==1) printf("ok");
	getch();
}

Sữa lại sao thế mọi người. Kết quả sai rồi

1 Like

Em biết sửa rồi. Cảm ơn mọi người

1 Like

Xin lỗi @Kelvin_Nguy_n nhé, lúc sáng có thấy câu hỏi của @Kelvin_Nguy_n. Nhưng câu hỏi thiếu thông tin quá, lại đang bận nên anh không vào trả lời được.

Em không nói rõ là kết quả sai rồi có nghĩa là sai như thế nào nên anh không có tinh thần vào xem.

Tuy nhiên vì em đã tự sửa được, liệu em có thể cho mọi người biết giải pháp của em không?

3 Likes

Em không biết giải pháp sao nữa. Chạy code bằng tay từ đầu tới cuối. Hóa ra cái chổ

int CheckChuoidoixung(int a[],char Chuoibatki[30])
{
    int Dodaichuoi=strlen(Chuoibatki);
    for(int i=0; i<Dodaichuoi; i++)
    {
        if(a[i]!=a[Dodaichuoi-i-1]) return 0;
    }
    return 1;
}

sữa lại thành

int CheckChuoidoixung(char Chuoibatki[30])
{
    int Dodaichuoi=strlen(Chuoibatki);
    for(int i=0; i<Dodaichuoi; i++)
    {
        if(i!=Dodaichuoi-i-1) return 0;
    }
    return 1;
}

:blush:

1 Like

Sao so sánh kí tự trong 2 chuỗi lại dùng chỉ số để so sánh nhỉ :open_mouth:
Mình nghĩ việc đầu tiên nên làm là kiểm tra độ dài 2 chuỗi có bằng nhau không. Không bằng nhau chắc chắc không phải là chuỗi đối xứng rồi :smiley:

2 Likes

Mình thấy thuật toán của bạn sai rồi
Nên đảo ngược chuỗi rồi so sánh là xong
Đừng so sánh từng ký tự. Vì đó chỉ là so sánh từng ký tự. giá trị return trả lại ko đúng với yêu cầu

  • Tại sao lại không so sánh từng kí tự trong khi nó đơn giản hơn đảo ngược chuỗi?

  • Tại sao giá trị return trả lại không đúng yêu cầu? Theo bạn thì nên return cái gì?

5 Likes

đảo ngược số thì còn được chứ kí tự thì còn khó lắm

Tạo 1 xâu mới với chỉ số “ngược” với xâu gốc là được mà?

3 Likes

This topic was automatically closed after 6 days. New replies are no longer allowed.

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