Tạm tạm mình sữa lại thế này, nếu muốn chương trình hoàn hảo thì phải thêm nhiều thứ nữa.
C Code:
Mình có bài tập như sau: " Nhập 1 xâu kí tự và kiểm tra xem xâu có đối xứng hay không?"
Mình đã code xong nhưng chương trình của mình lại không đúng trong trường hợp xâu có dấu cách (VD: Nhập vào: a bba => chương trình in ra: đây là xâu đối xứng).
Mong các bạn giúp mình sửa lỗi sai trong chương trình. Mình cảm ơn.
Tạm tạm mình sữa lại thế này, nếu muốn chương trình hoàn hảo thì phải thêm nhiều thứ nữa.
C Code:
Cảm ơn bạn maitan_10000. Mình đã tìm ra được lỗi sai trong bài mình rồi
C Code:
#include<stdio.h> #include<conio.h> #include<string.h> int main() { clrscr(); int i, j, dem = 0; char s[100]; { if(s[i]!=s[j]) { getch(); return 0; } else { dem++; } } getch(); return 0; }
skype: hvphu2010
Yahoo: hvphu2010
Sdt: 0129 609 4567
Mình cũng đóng góp một ý nhỏ.
Mình cũng vừa viết bài này, và cũng đi chia cả đống trường hợp. Nhưng sao không thể đơn giản hơn như sau nhỉ.
Theo mình tạo xâu s2 mới là đảo ngược của xâu ban đầu.
Dùng hàm strcmp(s1,s2) nếu ==0 thì hai xâu bằng nhau, ngược lại thì không bằng nhau.
lazy code
Chủ đề bài sau đó có nói là đã tìm ra chỗ sai của mình, nhưng không giải thích.
Tôi nêu chỗ này ra cho các bạn mới học dễ tham khảo:
C Code:
#include <stdio.h> #include <string.h> main () { char s[100]; int i, n; for(i=0 ;i<(n/2); i++) { if (s[i]=s[n-i-1]); // sai chỗ này, phải dùng == thay vì = // vì chỗ sai này, cho nên xét xâu nào cũng đói xứng tuốt } }
* Nhắc nhở cho các bạn mới tập code: luôn luôn kiểm tra dấu == khi dùng if (nếu dùng dấu = thì phải hiểu chính xác mình muốn gì)
tb. tôi chỉ đưa ra chỗ sai thôi. Còn về giải thuật thì code của kitti là chính xác nhất
@toansvcn: giải thuật đảo ngược xâu của bạn quá dài dòng cho trường hợp này. Bạn cho rằng nó đơn giản là sai.
À, mình là mình thấy dấu "=" ở lệnh if có vấn đề thôi. Với cả cách bạn chủ 2pic thì sẽ in ra "1 đống" dòng "xau khong doi xung" nữa