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

-
» Cần chuyển nhượng dự án nhà chung cư và liền kề gấp
» Chuyên cửa gỗ cao cấp nội thất cho văn phòng, chung cư, biệt thự
» nhượng quyền chuyển giao công nghệ làm bánh mì
» Cần chuyển nhượng nhà thuốc GPP, tại số 29 Đặng Tiến Đông, quận Đống Đa, Hà Nội.
» Có nên thu nhỏ âm đạo không? Tư vấn chuyên gia
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-