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 | 
 

 Chẵn-Lẻ -(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 đề: Chẵn-Lẻ -(Mảng 1 chiều-Biến đổi trên mảng)   Thu Jan 20, 2011 12:00 am

Thu Jan 20, 2011 12:00 am » Chẵn-Lẻ -(Mảng 1 chiều-Biến đổi trên mảng)
Ý tưởng 1: Chọn các số chẵn của dãy cho vào mảng B,sau đó tìm các số lẻ cho vào sau các số chẵn đó trong mảng B.In mảng B.

Code:
//Sap xep mang chan truoc le sau
#include <stdio.h>
#include <conio.h>
#define Max 10000
void Chanle(int A[],int B[],int N);
void Nhapmang(int A[],int N);
void Xuatmang(int A[],int N);
void main()
{
   int a[Max],b[Max],n;
   do
   {
      printf("Nhap vao so phan tu mang (0<=n<=%d):  ",Max);
      scanf("%d",&n);
   }while(n<1||n>Max);
   Nhapmang(a,n);
   printf("Cac phan tu vua nhap: ");
   Xuatmang(a,n);
   Chanle(a,b,n);
   printf("\nSau khi sap xep: ");
   Xuatmang(b,n);
   printf("\nMang ban dau: ");
   Xuatmang(a,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 Chanle(int A[],int B[],int N)
{
   int j=0;
   for(int i=0;i<N;i++) //Cho cac so chan mang A vao mang B
      if(A[i]%2==0)
      {
         B[j]=A[i];
         j++;
      }
   for(int i=0;i<N;i++) //Cho tiep cac so le mang A vao B
      if(A[i]%2!=0)
      {
         B[j]=A[i];
         j++;
      }
}

Ý tưởng 2: Sử dụng lệnh chèn và xóa.
Code:
//Sap xep mang chan truoc le sau
#include <stdio.h>
#include <conio.h>
#define Max 10000
void Copymang(int A[],int B[],int N);
void Xoa(int A[],int &N,int K);
void Chen(int A[],int &N,int K,int X);
void Chanle(int A[],int N);
void Nhapmang(int A[],int N);
void Xuatmang(int A[],int N);
void main()
{
   int a[Max],b[Max],n;
   do
   {
      printf("Nhap vao so phan tu mang (0<=n<=%d):  ",Max);
      scanf("%d",&n);
   }while(n<1||n>Max);
   Nhapmang(a,n);
   Copymang(a,b,n);
   printf("Cac phan tu vua nhap: ");
   Xuatmang(a,n);
   Chanle(b,n);
   printf("\nSau khi sap xep: ");
   Xuatmang(b,n);
   printf("\nMang ban dau: ");
   Xuatmang(a,n);
   getch();
}
void Copymang(int A[],int B[],int N)
{
   for(int i=0;i<N;i++)
      B[i]=A[i];
}
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 Xoa(int A[],int &N,int K)
{
  for(int i=K;i<N;i++)
      A[i]=A[i+1];
  N--;
}
void Chen(int A[],int &N,int K,int X)
{
   for(int i=N;i>K;i--)
      A[i]=A[i-1];
   A[K]=X;
   N++;
}
void Chanle(int A[],int N)
{
   int j=0;
   for(int i=0;i<N;i++)
      if(A[i]%2==0)
      {
         Chen(A,N,j,A[i]);
         Xoa(A,N,i+1);
         j++;
      }
}
   



Tboy

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

Chẵn-Lẻ -(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 
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-