Chỉ em cách sắp xếp các phần tử là số chính phương tăng dần với ạ

Vấn đề là vầy: đầu tiên em sắp xếp các phần tử của 1 mảng theo thứ tự tăng dần trước. Khi đã theo thứ tự tăng dần rồi thì em bắt đầu kiểm tra xem phần tử nào trong mảng là số chính phương rồi mới cho hiển thị ra màn hình thế mà vẫn bị sai ạ. code ->

// các prototypes
void mangTangDan(int array[], int KichThuocMang)
void PhanTuChinhPhuongTangDan(int array[], int KichThuocMang);
int ChinhPhuong(int x);

void main(int argc, char* argv[]) {
    int i;
    int mangA[6];
    for(i = 0; i < 6; i++) {
        printf("Phan tu %d: ", i + 1);
        scanf("%d", &mangA[i]);
    }
    mangTangDan(mangA, size1);
}

// xếp các phần tử mảng là số chính phương tăng dần
void mangCPTangDan(int array[], int KichThuocMang) {
    int i, j;
    int bientam;// biến tạm
    // đàu tiên sắp xếp mảng tăng dần trước
    for (i = 0; i < KichThuocMang; i++) {
        for(j = i + 1; j < KichThuocMang; j++) {
            if((array[i] > array[j])) {
                bientam = array[i];
                array[i] = array[j];
                array[j] = bientam;
            }
        }
    }
    /* phần tử mảng bây giờ đã theo thứ tự tăng dần rồi,
    nên em cho các phần tử nào là số chính phương hiển thị ra màn hình */
    for(i = 0; i < KichThuocMang; i++) {
        if(ChinhPhuong(array[i])) {
            printf("%d\t", array[i]);
        }
    }
}
// hàm này để kiểm tra số chính phương
int ChinhPhuong(int x) {
    int ketqua = 0;
    int i;
    for(i = 1; i <= sqrt(x); i++) {
        if(x == pow(i, 2))
            ketqua = 1;
    }
    return ketqua;
}

Sai như thế nào hả bạn?

Nó hiển thị ra màn hình cả 1 mảng luôn

Thì bạn phải cho mọi người biết hiện ra cái gì chứ -_-

Thớt xét hẳn sqrt() nhé :smiley: không cần lặp.

Đổi lại thành x == i*i xem sao.

1 Like

Có ai chỉ em bài tập này với

-Bạn code y như code Pascal ấy. Hàm kiểm tra chính phương không cần biến kết quả làm gì, chỗ gán ketqua = 1 bạn viết return 1 luôn, còn ở cuối viết return 0.

  • Bạn chưa cho mình biết console hiển thị ra cái gì, không screenshot console thì còn lâu mới có người giúp bạn.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?