1 phần tử tính làm gì đâu mình xem lại rồi bị thiêu dấu và ở dòng cuối mà vẫn chạy
Sắp sếp số theo thứ tự tăng dần bị lỗi
sao vẫn chưa sắp xếm nhỉ
code bạn thiếu khá nh chỗ, chạy k đc
bạn xem hộ tớ với…
Hàm swap(int,int) khi thực hiện xong không có tác dụng gì. Bạn phải thay bằng con trỏ
int swap(int * a,int * b){
* a^= * b;
* b^=* a;
* a^=* b;
}
minh chua hoc con tro chuot ban a
sao swap không có tác dụng nhỉ??? không sắp xếp gì cả
code bạn chỗ hoán vị phải sử dụng địa chỉ nó mới cập nhật đc dữ liệu, vì hàm hoán vị của bạn k xài địa chỉ nên nó k hoạt động thôi, code mình đã sửa vài chỗ, bài xem tham khảo
#include<stdio.h>
#include"conio.h"
void input(int A[], int n)
{
for (int i = 0; i<n; i++)
{
printf("A[%d]", i);
scanf_s("%d", &A[i]);
}
}
void swap(int &x,int &y)
{
int temp,i,j;
temp = x;
x = y;
y = temp;
}
void hoandoi(int A[], int n)
{
for (int i = 0; i<n - 1; i++)
for (int j = i+1; j<n; j++)
if (A[i]>A[j])
swap(A[i], A[j]);
}
void display(int A[], int n)
{
for (int i = 0; i<n; i++)
printf("%d", A[i]);
}
void main()
{
int n, A[100];
scanf_s("%d", &n);
input(A, n);
printf("mang truc khi sap\n");
display(A, n);
printf("\nmang sau khi spa\n");
hoandoi(A, n);
display(A, n);
_getch();
}
void swap(int &x,int &y)
{
int temp,i,j;
temp = x;
x = y;
y = temp;
}
&x va &y la gi thế bạn mình không biết cái này sao lại có thếm i và j làm gì vậy
&x,&y trong C++ gọi là reference . Nhưng trong C thì hàm viết như vậy không chạy được
có cách nào khác không bạn
đúng như lời @Gio nói. “&” trong C++ gọi là reference, nói dễ hiểu là tham chiếu, còn dễ hiểu hơn có nghĩa là địa chỉ. Trong C thì bạn có thể tham khảo cách của @Gio. À, còn i vs j k có gì đâu, nãy mình bỏ nhầm chỗ đó, bạn có thể xóa nó :))
nhưng sao mình chạy chương trình C vẫn chạy nhỉ. chẳng hiểu
Chắc trình biên dịch của bạn không phải thuần C 
cũng còn tùy vào compiler nữa bạn à
Cai & x &y là của C++ nếu C thì làm sao hả bạn
C++ va C khác nhau không các bạn
@Toi_Do nếu là C thì bạn có thể sử dụng cách của Gió nêu ở trên đấy. Còn C vs C++ khác nhau thì chỉ khác phương thức vs chút xíu ngôn ngữ thôi, còn lại thì y chang nhau :))
Mình sửa lại code của bạn như sau:
#include<stdio.h>
void input(int A[],int n);
void swap( int x, int y) ;
void hoandoi (int A[],int n);
void display(int A[], int n);
int main() {
int n,A[100];
printf("Nhap so phan tu cua mang:");
scanf("%d",&n);
input(A,n);
printf("mang truoc khi sap:");
display(A,n);
printf("\nmang sau khi sap:");
hoandoi(A,n);
display(A,n);
return 0;
}
void input(int A[],int n) {
for(int i=0; i<n; i++) {
printf("A[%d]=",i);
scanf("%d",&A[i]);
}
}
void swap( int *x, int *y) {
int temp;
temp=*x;
*x=*y;
*y=temp;
}
void hoandoi (int A[],int n) {
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if(A[i]>A[j])
swap(&A[i],&A[j]);
}
void display(int A[], int n) {
for(int i=0; i<n; i++)
printf("%d\t",A[i]);
}
Mình lưu ý vài điểm về code của bạn:
1.Khi bạn khai báo int hoandoi (int A[],int n) như thế này thì hàm hoandoi phải trả về hàm gọi nó một số nguyên.
2.Khi dùng hàm nên khai báo trước rồi mới định nghĩa.
3.Ở hàm swap, bạn dùng để hoán đổi 2 biến muk lại để tham số của hàm là 2 biến thì sẽ không giải quyết được vấn đề. Cái này bạn nên xem video sau:
C++ phát triển dựa trên nền tảng C. C++ có hỗ trợ hướng đối tượng, và nhiều thứ khác 
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?