各位谁帮我做这道c++,速度了
定义一个类模板,其数据成员是一个数组,该类的模板参数为数组的数据类型T和数组的大小n,即:template<typenameT,intn>classmyArray{…};...
定义一个类模板,其数据成员是一个数组,该类的模板参数为数组的数据类型T和数组的大小n,即:template<typename T,int n>class myArray{…};。类模板的成员函数能够实现以下的功能:数组元素的输入input(),求最大值getmax(),求最小值getmin(),数组的排序(从大到小顺序)sort()和数组元素输出output()。在主函数中用模板类定义对象myArray<int > obj,编写相应的程序,并进行功能测试。
展开
2个回答
展开全部
#include<iostream>
using namespace std;
int main( )
{
int i,j,k,h;
bool flag;
int a[6],b[6],c1[10],c2[10]; //a[6]存i各位的数字 即称为 原数,b[6]用来存储乘以2、3、4、5、6后的数各位的数字
for(i=100000;i<=166667;i++) // 因为最大数不超过 166667 所以逐个数判断 是否满足条件 满足则输出
{
a[0]=i%10; // 求的是原数 个位 的数字
a[1]=i%100/10; // 求的是原数 十位 的数字
a[2]=i%1000/100;
a[3]=i%10000/1000;
a[4]=i%100000/10000;
a[5]=i/100000; // 求的是原数第6位的数字
flag=false;
for(j=2;j<=6;j++) //此处用了5次循环 分别用来计算“原数”乘以2、3、4、5、6后的数的 各个位 的数字
{
b[0]=(i*j)%10;
b[1]=(i*j)%100/10;
b[2]=(i*j)%1000/100;
b[3]=(i*j)%10000/1000;
b[4]=(i*j)%100000/10000;
b[5]=(i*j)/100000;
for(k=0;k<10;k++) //因为 这个六位数 始终是由 0-9 这10 个数字组成,所以用两个长度为 10 的数组
{ //分别对应存放 两个 6 位数的数字 比如 0 就存在 c1[0]里面,9就存在c1[9]里,
c1[k]=0; //由于只有6 个 数字 所以其他都以 0 代替。第一个6位数存在数组c1里 第二个算出来的6位数存在c2里
c2[k]=0;
}
for(k=0;k<=9;k++)
for(h=0;h<6;h++) //此循环 即是 把六个数字放到 数组里对应的位置。
{
if(a[h]==k)
c1[k]=k;
if(b[h]==k)
c2[k]=k;
}
for(k=0;k<10;k++)
if(c1[k]!=c2[k]) //此判断 即是 判断 数组 c1 和 c2 中存的 数字 是否相同 不同则把标志量flag设成true 退出此循环
{
flag=true;
break;
}
}
if(flag==false) //输出满足条件的数。
cout<<i<<endl;
}
return 0;
}
using namespace std;
int main( )
{
int i,j,k,h;
bool flag;
int a[6],b[6],c1[10],c2[10]; //a[6]存i各位的数字 即称为 原数,b[6]用来存储乘以2、3、4、5、6后的数各位的数字
for(i=100000;i<=166667;i++) // 因为最大数不超过 166667 所以逐个数判断 是否满足条件 满足则输出
{
a[0]=i%10; // 求的是原数 个位 的数字
a[1]=i%100/10; // 求的是原数 十位 的数字
a[2]=i%1000/100;
a[3]=i%10000/1000;
a[4]=i%100000/10000;
a[5]=i/100000; // 求的是原数第6位的数字
flag=false;
for(j=2;j<=6;j++) //此处用了5次循环 分别用来计算“原数”乘以2、3、4、5、6后的数的 各个位 的数字
{
b[0]=(i*j)%10;
b[1]=(i*j)%100/10;
b[2]=(i*j)%1000/100;
b[3]=(i*j)%10000/1000;
b[4]=(i*j)%100000/10000;
b[5]=(i*j)/100000;
for(k=0;k<10;k++) //因为 这个六位数 始终是由 0-9 这10 个数字组成,所以用两个长度为 10 的数组
{ //分别对应存放 两个 6 位数的数字 比如 0 就存在 c1[0]里面,9就存在c1[9]里,
c1[k]=0; //由于只有6 个 数字 所以其他都以 0 代替。第一个6位数存在数组c1里 第二个算出来的6位数存在c2里
c2[k]=0;
}
for(k=0;k<=9;k++)
for(h=0;h<6;h++) //此循环 即是 把六个数字放到 数组里对应的位置。
{
if(a[h]==k)
c1[k]=k;
if(b[h]==k)
c2[k]=k;
}
for(k=0;k<10;k++)
if(c1[k]!=c2[k]) //此判断 即是 判断 数组 c1 和 c2 中存的 数字 是否相同 不同则把标志量flag设成true 退出此循环
{
flag=true;
break;
}
}
if(flag==false) //输出满足条件的数。
cout<<i<<endl;
}
return 0;
}
展开全部
#include<iostream>
using namespace std;
template<typename T,int n>
class myArray
{
T a[n];
public:
void input(){cout<<"请输入"<<n<<"个数\n";for(int i=0;i<n;i++)cin>>a[i];}
void output(){for(int i=0;i<n;i++)cout<<a[i]<<' ';cout<<endl;}
T getmax(){T m=a[0];for(int i=1;i<n;i++) if(a[i]>m) m=a[i]; return m;}
T getmin(){T m=a[0];for(int i=1;i<n;i++) if(a[i]<m) m=a[i]; return m;}
void sort(){for(int i=0;i<n;i++)for(int j=0;j<i;j++)if(a[i]>a[j]){T t=a[i];a[i]=a[j];a[j]=t;}}
};
int main()
{
myArray<int,6> obj;
obj.input();
cout << "最大值" << obj.getmax() << ", 最小值:" << obj.getmin() << endl;
obj.sort();
obj.output();
return 0;
}
using namespace std;
template<typename T,int n>
class myArray
{
T a[n];
public:
void input(){cout<<"请输入"<<n<<"个数\n";for(int i=0;i<n;i++)cin>>a[i];}
void output(){for(int i=0;i<n;i++)cout<<a[i]<<' ';cout<<endl;}
T getmax(){T m=a[0];for(int i=1;i<n;i++) if(a[i]>m) m=a[i]; return m;}
T getmin(){T m=a[0];for(int i=1;i<n;i++) if(a[i]<m) m=a[i]; return m;}
void sort(){for(int i=0;i<n;i++)for(int j=0;j<i;j++)if(a[i]>a[j]){T t=a[i];a[i]=a[j];a[j]=t;}}
};
int main()
{
myArray<int,6> obj;
obj.input();
cout << "最大值" << obj.getmax() << ", 最小值:" << obj.getmin() << endl;
obj.sort();
obj.output();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询