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;
}
Bài liên quan
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é không cần lặp.
Đổi lại thành x == i*i xem sao.
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ếtreturn 1
luôn, còn ở cuối viếtreturn 0
.