01/10/2018, 11:48

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	", 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;
}
HK boy viết 13:49 ngày 01/10/2018

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

pham hong thai viết 13:57 ngày 01/10/2018

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

HK boy viết 14:01 ngày 01/10/2018

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

rogp10 viết 13:54 ngày 01/10/2018

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

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

pham hong thai viết 13:52 ngày 01/10/2018

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

HK boy viết 13:48 ngày 01/10/2018

-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.
Bài liên quan
0