01/10/2018, 17:17
Sắp xếp mảng không thành công
Đoạn code này của em viết để sắp xếp mảng dùng phương pháp đổi chỗ trực tiếp mà không chạy được ạ, mọi người xem giúp em chỗ nào sai với ạ.
#include <stdio.h>
#include <stdlib.h>
void hoanDoi(int *b, int *c);
void sapXepArray(int A[], int *kichThuoc);
int main()
{
int A[100];
int i, n;
printf("Nhap vao so phan tu cua mang: ");
scanf("%d",&n);
for(i=0; i<n; i++)
{
A[i] = rand()%(9+1);
}
for(i=0; i<n; i++)
{
printf("A[%d] = %d ", i, A[i]);
}
sapXepArray(A,&n);
printf("Mang sau khi duoc sap xep:
");
for(i=0; i<n; i++)
{
printf("A[%d] = %d
", i, A[i]);
}
return 0;
}
void hoanDoi(int *b, int *c)
{
int temp;
temp = *b;
*b = *c;
*c = temp;
}
void sapXepArray(int A[], int *kichThuoc)
{
int i,j;
for(i=0; i<*kichThuoc-1; i++)
{
for(j=i+1; j<*kichThuoc; j++)
{
if(A[j] < A[i])
{
hoanDoi(A[j],A[i]);
}
}
}
}
Mong mọi người giúp đỡ! Em cám ơn nhiều ạ.
Bài liên quan
Đúng là C chắc là crash rồi.
A[i]
vớiA[j]
làint
mà.merged and moved by noname00
Em sửa thành:
hoanDoi( *(A + j), *(A+i) );
Như thế này không biết đúng không ạ.
Kết quả nó vẫn không chạy hàm sapXepArray luôn ạ
Mình thấy có gì khác nhau đâu
Em mới học về con trỏ ạ
Giúp em giải quyết với ạ.
=((
Chắc gặp con trỏ với mảng bạn hơi rối. Vậy giả sử bây giờ bạn ko truyền 2 thành phần trong mảng, mà truyền 2 biến a và b vào hàm hoán đổi thì bạn sẽ truyền như thế nào
Như này đc ko ạ?
Không phải, ý mình là hàm hoan đổi ko thay đổi gì.
Nhưng thay vì truyền a[i], a[j] thì bạn thay bằng a và b thì bạn sẽ truyền như thế nào?
Hàm nhận vào con trỏ thì bạn đưa địa chỉ 2 biến A[j], A[i] vào là ngon lành thôi nhé
Một ví dụ khác nhận vào con trỏ trong chương trình của bạn là ở ngay lệnh scanf, bạn đưa cho nó địa chỉ của n, từ đó scanf mới có thể thay đổi giá trị của n được
hàm hoanDoi(int* b, int* c) của bạn nhận vào 2 con trỏ mà, bạn truyền vào A[i], A[j] hay *(A+i), *(A+j) -> đều là truyền giá trị.
bạn thử truyền như này xem (A+i), (A+j)
Dạ em đã hiểu được vấn đề rồi ạ. Em cám ơn mọi người nhiều nha ^^
Em cảm ơn mọi người đã giúp đỡ ạ, cám ơn mọi người rất nhiều!!

^^