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

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define true 1
#define false 0

void nhapMang(int arr[])
{
    for(int i=0;;i++)
    {
        scanf("%d",&arr[i]);
        if(arr[i]==0)
            break;
    }
}
//đếm số phần tử mảng
int demsophantu(int arr[])
{
    int dem=0;
    for(int i=0;;i++)
    {
        dem++;
        if(arr[i]==0)
            break;
    }
     return dem;
}
//kiểm tra mảng đối xứng
int Mangdoixung(int a[],int LEN,int dem)
{
    LEN=(int)dem/2;
    for(int i=0;i<LEN;i++)
        for(int j=0;j<LEN;j++)
            if(a[i]==a[dem-j-1])
                return true;
    return false;
}
int main()
{
    int arr[10000],dem,t=0;
    int LEN, n;
    scanf("%d",&n);
    while(t<n)
    {
        nhapMang(arr);
        dem=demsophantu(arr);
        if(Mangdoixung(arr,LEN,dem))
            {
                printf("Testcase %d: Symmetric\n",t);
            }
        else
            {
                printf("Testcase %d: Asymmetric\n",t);
            }
        t++;
    }
    return 0;
}

cho em hỏi phần hàm kiểm tra mảng đối xứng của em nên sửa như nào cho ổn ạ, em sửa lên sửa xuống nó vẫn chạy sai :frowning:

Nếu tớ không nhầm, hàm demsophantu cài đặt bị sai. Nếu mảng của cậu có duy nhất 1 số 0, số phần tử của mảng đó nên là 0, chứ không phải 1.

5 Likes

vậy mình đảo dem++ và if…break cho nhau hay là sửa if a[i]==0 break …else dem++ thì đc ạ

à đc rùi anh ơi…em cảm ơn anh ạ

2 Likes

Uhm, đúng đó cậu :smile:
Cậu có thể sửa lại hàm main để test lại riêng mỗi hàm đó. Nếu hàm đó đúng rồi, ít nhất cậu cũng loại trừ được :smile:

3 Likes

dạ để em luyện dần… em toàn thói quen nghĩ ra hướng là code 1 lèo xong đi fix đến khổ :sob:

1 Like

3 posts were split to a new topic: Nhập 1 mảng chưa biết số lượng phần tử đến số 0 thì dừng lại và lấy cả số 0 như thế nào?

bool thì làm gì có return true false baank

Cậu ấy tự define true và false mà cậu :smile:

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