Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.



 
Trang ChínhTrang Chính  Tìm kiếmTìm kiếm  Latest imagesLatest images  Đă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
Tboy


Nam 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

Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) Empty
Bài gửiTiêu đề: Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng)   Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) EmptyMon Jan 24, 2011 10:58 pm

Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) Titleb10 Mon Jan 24, 2011 10:58 pm » Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) Titleb13
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

Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) Border10 Di chuyển mảng-(Mảng 1 chiều-Biến đổi trên mảng) Border14
Về Đầu Trang Go down
https://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

-
» Chèn mảng vào mảng-(Mảng 1 chiều-Biến đổi trên mảng)
» Xóa một phần tử khỏi mảng-(Mảng 1 chiều-Biến đổi trên mảng)
» Xóa một phần tử khỏi mảng-(Mảng 1 chiều-Biến đổi trên mảng)
» Chèn vào mảng- (Mảng 2 chiều- Biến đổi trên mảng)
» Xóa mảng - (Mảng 2 chiều- Biến đổi trên mảng)
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-