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;
}
không cần lặp.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?