Nhờ sửa lỗi bài tìm dãy đối xứng

Code trên mình viết hoàn chỉnh luôn muk.Vừa nhập mảng ,vừa kiểm tra tính đối xứng của mảng đã nhập.Nếu như bạn chỉ cần phần đối xứng thì chỉ cần quan tâm tới hàm:
int doi_xung(int so_nguyen[],int so_phan_tu).thôi.

2 Likes

anh giải thích cái kia đi

1 Like

Ta có cú pháp của if-else

if(biểu thức)
statement 1;
else
statement 2;

Khi bắt đầu làm việc thì việc đầu tiên là đánh giá biểu thức,nếu giá trị trả về khác 0 thì statement 1 được thực hiện ngược lại nếu giá trị trả về bằng 0 thì thực hiện statement 2.
Trong trường hợp trên mình viết:
if(doi_xung(so_nguyen,so_phan_tu))
Khi đó doi_xung(so_nguyen[],so_phan_tu) có nghĩa là mình đang gọi hàm int doi_xung(int so_nguyen[],int so_phan_tu) và đã truyền vào hàm này 2 đối số đó là mảng so_nguyen và số phần tử của mảng so_phan_tu.Khi đó hàm sẽ thực hiện quá trình kiểm tra mảng nếu mảng đối xứng hàm sẽ trả về hàm main đã gọi nó 1 giá trị bằng 1,cụ thể là:
if(doi_xung(so_nguyen,so_phan_tu))
lúc này sẽ thay doi_xung(so_nguyen,so_phan_tu) bằng số 1 và bắt đầu kiểm tra,1 khác 0 nên sẽ thực hiện lệnh: printf("Mang da nhap la mang doi xung.");, ngược lại nếu trả về 1 giá trị bằng 0 thì sẽ thực hiện lệnh printf("Mang da nhap la mang khong doi xung."); phía sau else.

3 Likes

Mọi người cho em hỏi bài này nếu làm bằng đệ quy thì sao ạ.

Ý tưởng:
- Nếu độ dài dãy số <= 1 thì trả về True
- Nếu số đầu khác số cuối, trả về False

- Trả về dãy số mà đã lược bỏ đi số đầu và số cuối.

VD: 123321
- Xét số đầu và cuối : 1 = 1, vẫn chưa sai
- Trả về 2332
- Xét 2 = 2 => vẫn đúng
- Trả về 33
- Xét và thấy 3 = 3
- bỏ đi 3, dãy không còn số nào nên <= 1, trả về True

Nhưng vấn đề của em ở đây là làm sao lấy số đầu và làm sao bỏ đi số đầu và cuối

1 Like

Đơn giản thôi, bạn chuyển số thành chuỗi số bằng hàm itoa rồi thao tác với chuỗi là được mà. easy đúng ko :smiley:
Còn cách dùng thì hỏi anh @Google nhé :3

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