c++分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。

分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。要求:(1)数组a和b的大小用动态分配内存方式确定(2)至少调用一次子函数... 分别在a数组和b数组中放入若干个数,把两个数组中的数按由小到大的顺序归并到c数组中。
要求:(1)数组a和b的大小用动态分配内存方式确定
(2)至少调用一次子函数
展开
 我来答
yusha504
2012-07-17 · 超过10用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:19万
展开全部
#include<iostream>
using namespace std;
class Array
{
private:
int *c;//指向包含所有数组元素的指针
int len;//结合后的数组长度
public:
Array(){len=0;c=0;}
void get_data();
~Array(){delete [] c;}
void sort();
void display();
};
void Array::get_data()
{
int i,j,inp_a,inp_b;
cout<<"请输入数组a的长度:";
cin>>inp_a;
while(inp_a<0)//要注意有这个才完整!
{
cout<<"you are wrong!"<<endl;
cout<<"请输入数组a的长度:";
cin>>inp_a;
}
int *pa=new int[inp_a];
cout<<"请输入数组a里的元素:"<<endl;
for(i=0;i<inp_a;i++)
cin>>pa[i];
cout<<"请输入数组b的长度:";
cin>>inp_b;
while(inp_b<0)//要注意有这个才完整!
{
cout<<"you are wrong!"<<endl;
cout<<"请输入数组b的长度:";
cin>>inp_b;
}
int *pb=new int[inp_b];
cout<<"请输入数组b里的元素:"<<endl;
for(i=0;i<inp_b;i++)
cin>>pb[i];
len=inp_a+inp_b;
c=new int[len];
for(i=0;i<inp_a;i++)
c[i]=pa[i];
for(j=0;j<inp_b;i++,j++)
c[i]=pb[j];
delete [] pa;
delete [] pb;
}
void Array::sort()//从小到大
{
int i,j,pick,temp;
for(i=0;i<len-1;i++)
{
pick=i;
for(j=i+1;j<len;j++)
if(c[pick]>c[j])
pick=j;
if(pick!=i)
{
temp=c[i];
c[i]=c[pick];
c[pick]=temp;
}
}
}
void Array::display()
{
int i;
cout<<"排好序后的结果:"<<endl;
for(i=0;i<len;i++)
cout<<c[i]<<" ";
}
int main()
{
Array arr_obj;
arr_obj.get_data();
arr_obj.sort();
arr_obj.display();
return 0;
}
一生吥胜
2012-07-03 · TA获得超过208个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:133万
展开全部
// Test0703.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include <malloc.h>
void ConstructArr(int arr[],int iSize);
void MaoPaoSort(int arr[],int iSize);
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0;
int iArrSize=0,iaSize=0,ibSize=0;
printf(_T("构造A数组,请输入A数组大小:"));
scanf(_T("%d"),&iArrSize);
if (iArrSize < 0)
{
printf(_T("Err:输入大小无效\n"));
return -1;
}
iaSize = iArrSize;
int *paA = (int *)malloc(iaSize * sizeof(int));
if (NULL != paA)
{
ConstructArr(paA,iaSize);
}
printf(_T("构造B数组,请输入B数组大小:"));
scanf(_T("%d"),&iArrSize);
if (iArrSize < 0)
{
printf(_T("Err:输入大小无效\n"));
return -1;
}
ibSize = iArrSize;
int *paB = (int *)malloc(iaSize * sizeof(int));
if (NULL != paB)
{
ConstructArr(paB,ibSize);
}
int icSize = iaSize + ibSize;
int *paC = (int *)malloc(icSize * sizeof(int));
if (NULL != paC)
{
for (i=0;i<icSize;i++)
{
if (i<iaSize)
{
paC[i] = paA[i];
}
else
{
paC[i] = paB[i-iaSize];
}

}
}
printf(_T("C数组的元素为: "));
MaoPaoSort(paC,icSize);
printf(_T("sort: "));
for (i=0;i< icSize;i++)
{
printf(_T("%d "),paC[i]);
}
printf(_T("\n"));
free(paA);
free(paB);
free(paC);

return 0;
}
void ConstructArr(int arr[],int iSize)
{
int i = 0,iInput = 0;
printf(_T("请输入%d个整数: "),iSize);
printf(_T("\n"));
for (i=0;i<iSize;i++)
{
printf(_T("输入第%d个整数:"),i);
scanf(_T("%d"),&iInput);
arr[i] = iInput;
printf(_T("\n"));
}
printf(_T("数组的元素为: "));
for(i=0;i<iSize;i++)
{
printf(_T("%d "),arr[i]);
}
printf(_T("\n"));
}
void MaoPaoSort(int arr[],int iSize)
{
int temp = 0;
for (int i = iSize - 1;i >0 ;i--)
{
for (int j = 0;j < i;j++)
{
if (arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式