mr.kieu Thành viên chính thức
Tổng số bài gửi : 7 Join date : 26/02/2010
| Tiêu đề: Help Bài tập về chèn một số vào mảng !. Wed 10 Mar 2010, 23:53 | |
| Đề bài là bạn hãy chèn vào mảng một số sao cho mảng đó vẫn tăng dần. Lưu ý, mình nhập vào một mảng bất kỳ, bạn phải sắp xếp nó trước. Mình làm rồi nhưng vẫn chưa được. Các bạn chỉ dùm mình sai ở đâu. Thanks. Đây là đoạn Code của mình: - Code:
-
# include <stdio.h> # include <conio.h> void nhapmang (int a[],int n); void doicho (int *a,int *b); void main() { int i,j,a[25],n,x,p; printf("\nnhap n: "); scanf("%d",&n); nhapmang(a,n); for (i=0;i<n-1;i++) for (j=i+1;j<n;j++) if (a[i]>a[j]) doicho( &a[i],&a[j]); for (i=0;i<n;i++) printf("%d ",a[i]); printf("\nnhap so x can chen: "); scanf("%d",&x); for (i=1;i<n;i++) { p=i-1;//xet cac phan tu nam phia truoc a[i] while ((p>=0)&&(a[p]>x)) if (a[i]>=x) { a[p+1]=a[p];// doi a[p]>x sang ben phai p--; a[p+1]=x; // chen x vao vi tri p+1 } } for (i=0;i<n;i++) printf("%d ",a[i]); getch();
} void nhapmang(int a[],int n) { int i; for (i=0;i<n;i++) { printf("\nphan tu thu a[%d] la: ",i); scanf("%d",&a[i]); } } void doicho(int *a,int *b) { int tam; tam=*a; *a=*b; *b=tam; }
| |
|
mr.kieu Thành viên chính thức
Tổng số bài gửi : 7 Join date : 26/02/2010
| Tiêu đề: Re: Help Bài tập về chèn một số vào mảng !. Thu 11 Mar 2010, 00:46 | |
| Với sự giúp đỡ của Thiendiep_uit, cuối cùng sau một hồi vật lộn, nhịn ăn nhịn uống (nói hơi quá tý hehe) trong vòng buổi tối bài tập đó cũng đã giải xong. Mời mọi người tham khảo và cho nhận xét nhé. Đây là code - Code:
-
# include <stdio.h> # include <conio.h> void nhapmang (int a[],int n); void doicho (int *a,int *b); void insert(int a[], int n, int x); void main() { int i,j,a[25],n,x,p; printf("\nnhap n: "); scanf("%d",&n); nhapmang(a,n); for (i=0;i<n-1;i++) for (j=i+1;j<n;j++) if (a[i]>a[j]) doicho( &a[i],&a[j]); for (i=0;i<n;i++) printf("%d ",a[i]); printf("\nnhap so x can chen: "); scanf("%d",&x); insert(a,n,x); for (i=0;i<=n;i++) printf("%d ",a[i]); getch();
} void nhapmang(int a[],int n) { int i; for (i=0;i<n;i++) { printf("\nphan tu thu a[%d] la: ",i); scanf("%d",&a[i]); } } void doicho(int *a,int *b) { int tam; tam=*a; *a=*b; *b=tam; } void insert(int a[], int n, int x) { int i=n-1; while(i>=0 && a[i]>x) { a[i+1]=a[i]; i--; } a[i+1]=x; n++; } | |
|
peterdrew Vip
Tổng số bài gửi : 55 Join date : 01/03/2010 Age : 41 Đến từ : Weapon Institute
| Tiêu đề: Re: Help Bài tập về chèn một số vào mảng !. Sun 16 May 2010, 00:15 | |
| Nhận xét: Việc chèn thêm phần tử vào mảng được thực hiện ngon, nhưng mới giới hạn bởi chèn thêm phần tử đó vào cuối mảng; chưa giải quyết được việc chèn vào một vị trí bất kỳ của mảng ban đầu. Code tương đối sáng sủa; nhưng việc để thừa biến p gây tốn bộ nhớ cho tài nguyên!. | |
|
Sponsored content
| Tiêu đề: Re: Help Bài tập về chèn một số vào mảng !. | |
| |
|