Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
Sunday, August 3, 2014

Viết chương trình nhập vào hai dãy số có thứ tự, sao đó trộn hai dãy số có thứ tự thành một dãy số có thứ tự. Yêu cầu không được trộn chung rồi mới sắp thứ tự. Khi trộn phải tận dụng được tính chất đã sắp của hai dãy con.




Bài Giải




/*
Name: Tron 2 day so thu tu thanh tang - giam
Copyright: None
Author: Tran Anh
Description: http://www.code.tavn.net
*/
#include<conio.h>
#include<stdio.h>

void inp(int t[], int k)
{
 for(int i=0;i<k;i++)
  {
   printf("\t-Nhap phan tu [%d]: ",i);
   scanf("%d",&t[i]);
   }
}

int testb(int t[], int k)
{
 int test=1;
 for (int i=0;i<k-1;i++)
  if(t[i]>t[i+1]) test=0;
  return test;
}
int testm(int t[], int k)
{
 int test=1;
 for (int i=0;i<k-1;i++)
  if(t[i]<t[i+1]) test=0;
  return test;

}
void prt(int t[], int k)
{
 int i;
 printf("\n");
 for(i=0;i<k;i++)
 printf("%4d",t[i]);

}
main()
{
 int n,m,i;
 printf("\t-Nhap so phan tu day 1: "); scanf("%d",&n);
 printf("\t-Nhap so phan tu day 2: "); scanf("%d",&m);
 int a[50], b[50],c[100];

 printf("\n\t-Nhap day so 1: \n");
 inp(a,n);
 printf("\n\t-Nhap day so 2: \n");
 inp(b,m);



 int ia=0,ib=0;
 if((testb(a,n)&&(testb(b,m)))||((testm(a,n))&&(testm(b,m))))
  {
   if (testb(a,n)&&(testb(b,m)))
   {
    if(n<m)
     for(i=n;i<m;i++) a[i]=999;
    else
     for(i=m;i<n;i++) b[i]=999;
 
   for (i=0;i<m+n;i++)
    {
     if (a[ia]<b[ib])
      {
       c[i]=a[ia];
       ia++;
       }
     else
      {
       c[i]=b[ib];
       ib++;
       }
     }
    }
   if ((testm(a,n))&&(testm(b,m)))
   {
 
    if(n<m)
     for(i=n;i<m;i++) a[i]=-999;
    else
     for(i=m;i<n;i++) b[i]=-999;
   
   for (i=0;i<m+n;i++)
    {
     if (a[ia]>b[ib])
      {
       c[i]=a[ia];
       ia++;
       }
     else
      {
       c[i]=b[ib];
       ib++;
       }
     }
    }

   
 prt(a,n);
 prt(b,m);
 printf("\n\t=>Day so da gop: \n");
 prt(c,m+n);


   }
 else
  printf("\n\t=> Day so ban nhap chua theo thu tu tang hoac giam");

 getch();
 return 0;
}


0 comments:

Post a Comment

Popular Posts