Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) Mon Jan 24, 2011 10:58 pm | |
| | Mon Jan 24, 2011 10:58 pm Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) | | | Code di chuyển các phần tử được chọn đến cuối dãy - Code:
-
#include <stdio.h> #include <conio.h> #define Max 10000 void Nhapmang(int A[],int N); void Xuatmang(int A[],int N); void Chenmang(int A[],int B[],int &N,int M,int K); void Xoamang(int A[],int &N,int K1,int K2); void Copymang(int A[],int B[],int K1,int K2); void Dichuyen(int B[],int C[],int N); void main() { int a[Max],b[Max],c[Max],n; do { printf("Nhap vao so phan tu mang: "); scanf("%d",&n); if(n<1||n>Max) printf("So phan tu mang phai nam trong doan [1..%d]\n",Max); }while(n<1||n>Max); Nhapmang(a,n); Copymang(a,b,0,n); printf("Day ban vua nhap: "); Xuatmang(b,n); Dichuyen(b,c,n); getch(); } void Nhapmang(int A[],int N) { for(int i=0;i<N;i++) { printf("A[%d]= ",i+1); scanf("%d",&A[i]); } } void Xuatmang(int A[],int N) { for(int i=0;i<N;i++) printf("%d ",A[i]); } void Copymang(int A[],int B[],int K1,int K2)//Goi ham voi K1-1 { for(int i=K1;i<K2;i++) B[i-K1]=A[i]; } void Xoamang(int A[],int &N,int K1,int K2)//Goi ham voi K1-1,K2-1 { for(int i=K1;i<N;i++) A[i]=A[i+K2-K1+1]; N-=K2-K1+1; } void Chenmang(int A[],int B[],int &N,int M,int K) { for(int i=N-1;i>=K;i--) A[i+M]=A[i]; for(int j=K;j<K+M;j++) A[j]=B[j-K]; N+=M; } void Dichuyen(int B[],int C[],int N) { int k1,k2; do { printf("\nChon khoang can di chuyen den vi tri cuoi: \n"); printf("Vi tri 1: "); scanf("%d",&k1); printf("Vi tri 2: "); scanf("%d",&k2); if(k1<1||k1>N||k2<1||k2>N||k1>k2) printf("Ban nhap sai!Moi nhap lai"); }while(k1<1||k1>N||k2<1||k2>N||k1>k2); Copymang(B,C,k1-1,k2); printf("Cac so can di chuyen: "); Xuatmang(C,k2-k1+1); Xoamang(B,N,k1-1,k2-1); Chenmang(B,C,N,k2-k1+1,N); printf("\nSau khi di chuyen: "); Xuatmang(B,N); } Code di chuyển các phần tử được chọn đến vị trí bất kì trong dãy - Code:
-
#include <stdio.h> #include <conio.h> #define Max 10000 void Nhapmang(int A[],int N); void Xuatmang(int A[],int N); void Chenmang(int A[],int B[],int &N,int M,int K); void Xoamang(int A[],int &N,int K1,int K2); void Copymang(int A[],int B[],int K1,int K2); void Dichuyen(int B[],int C[],int N); void main() { int a[Max],b[Max],c[Max],n; do { printf("Nhap vao so phan tu mang: "); scanf("%d",&n); if(n<1||n>Max) printf("So phan tu mang phai nam trong doan [1..%d]\n",Max); }while(n<1||n>Max); Nhapmang(a,n); Copymang(a,b,0,n); printf("Day ban vua nhap: "); Xuatmang(b,n); Dichuyen(b,c,n); getch(); } void Nhapmang(int A[],int N) { for(int i=0;i<N;i++) { printf("A[%d]= ",i+1); scanf("%d",&A[i]); } } void Xuatmang(int A[],int N) { for(int i=0;i<N;i++) printf("%d ",A[i]); } void Copymang(int A[],int B[],int K1,int K2)//Goi ham voi K1-1 { for(int i=K1;i<K2;i++) B[i-K1]=A[i]; } void Xoamang(int A[],int &N,int K1,int K2)//Goi ham voi K1-1,K2-1 { for(int i=K1;i<N;i++) A[i]=A[i+K2-K1+1]; N-=K2-K1+1; } void Chenmang(int A[],int B[],int &N,int M,int K) { for(int i=N-1;i>=K;i--) A[i+M]=A[i]; for(int j=K;j<K+M;j++) A[j]=B[j-K]; N+=M; } void Dichuyen(int B[],int C[],int N) { int k1,k2,m,d; do { printf("\nChon khoang can di chuyen: \n"); printf("Vi tri 1: "); scanf("%d",&k1); printf("Vi tri 2: "); scanf("%d",&k2); if(k1<1||k1>N||k2<1||k2>N||k1>k2) printf("Ban nhap sai!Moi nhap lai"); }while(k1<1||k1>N||k2<1||k2>N||k1>k2); Copymang(B,C,k1-1,k2); printf("Cac so can di chuyen: "); Xuatmang(C,k2-k1+1); do { printf("\nChon vi tri can chuyen den: "); scanf("%d",&m); if(m<1||m>N+1) printf("Vi tri ban nhap khong dung!"); }while(m<1||m>N); if(m<k1||m>k2) { Xoamang(B,N,k1-1,k2-1); if(m<k1) d=0; if(m>k2) d=1; Chenmang(B,C,N,k2-k1+1,m-1-(k2-k1)*d); } printf("Sau khi di chuyen: "); Xuatmang(B,N); } Tboy
| | | | | |
|