Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share | 
 

 Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Tboy
Cá voi
Cá voi
avatar


Nam Tổng số bài gửi : 178
Cảm ơn : 413
Danh vọng : 4
Join date : 03/01/2011
Age : 26
Đến từ : TPHCM

Bài gửiTiê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



Về Đầu Trang Go down
Xem lý lịch thành viên http://taplaptrinh.forumvi.com
 

Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 

 Similar topics

-
» 0975272627 d?ch v? cho thuê bàn gh? ?ám c??i uy tín 0975272627 liên h? n?i thuê bàn gh? t?i hn 0975272627.Cho thuê bàn gh? ?ám c??i 0975272627 chuyên cho thuê bàn gh? ?n h?i .Cho thuê nhà b?t ?ám c??
» 0862770688’!!’Trung tâm bảo hành tivi Philips tại TPHCM,LH-0936175427)Sửa tivi tại HCM chuyên nghiệp,bảo hành-sửa tivi LCD,LED,PLA
» 0936175427=>Sửa máy lạnh Sanyo tại HCM,Trung tâm bảo hành máy lạnh Sanyo tại TPHCM,*))((Dịch vụ sửa chữa máy lạnh chuyên nghiệp tại HCM,Sửa máy lạnh Sanyo tại HCM,Sửa máy lạnh Sanyo tại HCM,Sửa máy lạ
» @0986253639@>Trung Tâm bảo hành tivi Toshiba tại TPHCM,chuyên sửa tivi không lên nguồn, chập chờn, hình ảnh bị co,Thế Vinh>08 6275
» MỘT CHUYẾN DU XUÂN
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: Cơ sở lập trình 1 :: Bài tập thực hành-