重金悬赏~~~~跪求!!C++或C语言编程....各位能人请帮帮忙,这是我们选修的考试~!!
问题一共四道如下:1.编写一个对具有N个元素的数组X[],求最大值的程序,要求将求最大值的函数设计成函数模版。2.定义一个以类模版Sample,实现int,double,...
问题一共四道如下:
1. 编写一个对具有N个元素的数组X[ ],求最大值的程序,要求将求最大值的函数设计成函数模版。
2. 定义一个以类模版Sample,实现int,double,float数据类型的比较,并能给出最大值,最小值。
3. 某公司财务部需要开发一个计算雇员公职的程序,该公司有了类员工,工人的工资为每小时工资额乘以当月工作时数在加上工龄工资;销售员工资为每小时工资额乘以当月工作时数加上销售额提成再加上工龄工资,其中销售额提成等于该销售员当月售出商品全额的1%;管理人员工资为基本工资再加上工龄工资,工龄工资就是雇员在该公司工作的工龄每增加一年,月工资就增加35元,请用面向对象分析,设计这个程序,并用C++语言写出完成程序。
4. 定义一个类vector,用运算符重载的方法实现向量的相加减及其输出(为了方便编程,假设向量均为3个元素且均为整数)
请各位能人志士帮下忙,本人感激不尽~~~~!!!!!!只要回答出来还会追加赏金~~~~! 展开
1. 编写一个对具有N个元素的数组X[ ],求最大值的程序,要求将求最大值的函数设计成函数模版。
2. 定义一个以类模版Sample,实现int,double,float数据类型的比较,并能给出最大值,最小值。
3. 某公司财务部需要开发一个计算雇员公职的程序,该公司有了类员工,工人的工资为每小时工资额乘以当月工作时数在加上工龄工资;销售员工资为每小时工资额乘以当月工作时数加上销售额提成再加上工龄工资,其中销售额提成等于该销售员当月售出商品全额的1%;管理人员工资为基本工资再加上工龄工资,工龄工资就是雇员在该公司工作的工龄每增加一年,月工资就增加35元,请用面向对象分析,设计这个程序,并用C++语言写出完成程序。
4. 定义一个类vector,用运算符重载的方法实现向量的相加减及其输出(为了方便编程,假设向量均为3个元素且均为整数)
请各位能人志士帮下忙,本人感激不尽~~~~!!!!!!只要回答出来还会追加赏金~~~~! 展开
2个回答
展开全部
第一题 & 第四题已给出答案, 第三题请参考清华大学的郑莉编的 c++程序设计这本书的第244页,题目类似. 第二题只给你点提示,也看你自己的了,不难.
第一题:
#include<iostream>
using namespace std;
template<class T>
T maximum(T a[],int N)
{
T max;
max= a[0];
for(int i=0;i<N;i++){
if( max < a[i])
max = a[i];
}
return max;
}
template<class T>
void display(T a[],int N)
{
cout<<"数组元素如下所示:\n";
for(int i=0;i<N;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void main()
{
int a[]={10,2,5,4,19,20,3}; // 用一个整形数组测试
float b[]={1.0,2.8,3.94,4.51,0.61,7.83}; // 用一个浮点型数组测试
display(a,sizeof(a)/sizeof(int));
cout<<"该数组的最大值为:"<<maximum(a, sizeof(a)/sizeof(int))<<endl;
display(b,sizeof(b)/sizeof(float));
cout<<"该数组的最大值为:"<<maximum(b,sizeof(b)/sizeof(float))<<endl;
}
第四题(包含两个文件, 1.Vector.h, 2.vector.cpp):
//1. vector.h
#include"assert.h"
template<class T>
class Vector
{
public:
Vector(unsigned);
Vector(unsigned,T);
Vector(const Vector<T> &);
virtual ~Vector();
T & operator[](unsigned);
Vector<T> & operator=(const Vector<T> &);
Vector<T> operator+(const Vector<T> &);
Vector<T> operator-(const Vector<T> &);
int operator *(const Vector<T> &);
//friend ostream & operator <<(ostream & out,Vector<T>&);
unsigned length() const;
unsigned setSize(unsigned);
unsigned setSize(unsigned,T);
protected:
T * data;
unsigned size;
};
template<class T>Vector<T>::Vector(unsigned num):size(num)
{
data=new T[size];
assert(data!=0);
}
template<class T>Vector<T>::Vector(unsigned num,T v):size(num)
{
data=new T[size];
assert(data!=0);
for(int i=0;i<size;i++)
data[i]=v;
}
template<class T>Vector<T>::Vector(const Vector<T> & v)
{
size=v.size;
data=new T[size];
for(unsigned i=0;i<size;i++)
data[i]=v.data[i];
}
template<class T>Vector<T>::~Vector()
{
delete[]data;
}
template<class T>
T & Vector<T>::operator[](unsigned u)
{
return data[u];
}
template<class T>
Vector<T>& Vector<T>::operator=(const Vector<T> & v)
{
if(size!=v.size)
{
T * np=new T[v.size];
assert(np!=0);
delete[]data;
size=v.size;
data=np;
}
for(unsigned i=0;i<size;i++)
data[i]=v.data[i];
return *this;
}
template<class T>Vector<T> Vector<T>::operator+(const Vector<T> & v)
{
Vector<T> d(v.size);
for(unsigned i=0;i<v.size;i++)
d.data[i]=data[i]+v.data[i];
return d;
}
template<class T>Vector<T> Vector<T>::operator-(const Vector<T> & v)
{
Vector<T> d(v.size);
for(unsigned i=0;i<v.size;i++)
d.data[i]=data[i]-v.data[i];
return d;
}
template<class T>int Vector<T>::operator*(const Vector<T> & v)
{
int a=0;
for(unsigned i=0;i<v.size;i++)
a+=(v.data[i]*data[i]);
return a;
}
template<class T>unsigned Vector<T>::setSize(unsigned u)
{
if(size!=u)
{
T *np=new T[u];
assert(np!=0);
unsigned n=u<=size?u:size;
for(int i=0;i<n;i++)
np[i]=data[i];
delete[]data;
size=u;
data=np;
}
return size;
}
//2. vector.cpp
#include<iostream.h>
#include"Vector.h"
#include"assert.h"
void main()
{
Vector<int> a(3),v(3),d(3);
int c;
a[0]=1;a[1]=1;a[2]=4;v[0]=2;v[1]=3;v[2]=5;
c=a*v;
cout<<"c="<<c<<endl;
d=a+v;
for( int i=0;i<3;i++)
cout<<"d["<<i<<"]="<<d[i]<<" ";
cout<<endl;
d=a-v;
for(i=0;i<3;i++)
cout<<"d["<<i<<"]="<<d[i]<<" ";
cout<<endl;
}
第二题:
#include<iostream.h>
//模版类
template <class T>
T max(T x,T y)
{
return (x>y?x:y); // 找到较大值,这是两个数,你可以扩展到多个数
}
//主函数
void main()
{
cout<<max(2,5)<<","<<max(3.5,2.8)<<endl; // 输出比较结果
}
第一题:
#include<iostream>
using namespace std;
template<class T>
T maximum(T a[],int N)
{
T max;
max= a[0];
for(int i=0;i<N;i++){
if( max < a[i])
max = a[i];
}
return max;
}
template<class T>
void display(T a[],int N)
{
cout<<"数组元素如下所示:\n";
for(int i=0;i<N;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void main()
{
int a[]={10,2,5,4,19,20,3}; // 用一个整形数组测试
float b[]={1.0,2.8,3.94,4.51,0.61,7.83}; // 用一个浮点型数组测试
display(a,sizeof(a)/sizeof(int));
cout<<"该数组的最大值为:"<<maximum(a, sizeof(a)/sizeof(int))<<endl;
display(b,sizeof(b)/sizeof(float));
cout<<"该数组的最大值为:"<<maximum(b,sizeof(b)/sizeof(float))<<endl;
}
第四题(包含两个文件, 1.Vector.h, 2.vector.cpp):
//1. vector.h
#include"assert.h"
template<class T>
class Vector
{
public:
Vector(unsigned);
Vector(unsigned,T);
Vector(const Vector<T> &);
virtual ~Vector();
T & operator[](unsigned);
Vector<T> & operator=(const Vector<T> &);
Vector<T> operator+(const Vector<T> &);
Vector<T> operator-(const Vector<T> &);
int operator *(const Vector<T> &);
//friend ostream & operator <<(ostream & out,Vector<T>&);
unsigned length() const;
unsigned setSize(unsigned);
unsigned setSize(unsigned,T);
protected:
T * data;
unsigned size;
};
template<class T>Vector<T>::Vector(unsigned num):size(num)
{
data=new T[size];
assert(data!=0);
}
template<class T>Vector<T>::Vector(unsigned num,T v):size(num)
{
data=new T[size];
assert(data!=0);
for(int i=0;i<size;i++)
data[i]=v;
}
template<class T>Vector<T>::Vector(const Vector<T> & v)
{
size=v.size;
data=new T[size];
for(unsigned i=0;i<size;i++)
data[i]=v.data[i];
}
template<class T>Vector<T>::~Vector()
{
delete[]data;
}
template<class T>
T & Vector<T>::operator[](unsigned u)
{
return data[u];
}
template<class T>
Vector<T>& Vector<T>::operator=(const Vector<T> & v)
{
if(size!=v.size)
{
T * np=new T[v.size];
assert(np!=0);
delete[]data;
size=v.size;
data=np;
}
for(unsigned i=0;i<size;i++)
data[i]=v.data[i];
return *this;
}
template<class T>Vector<T> Vector<T>::operator+(const Vector<T> & v)
{
Vector<T> d(v.size);
for(unsigned i=0;i<v.size;i++)
d.data[i]=data[i]+v.data[i];
return d;
}
template<class T>Vector<T> Vector<T>::operator-(const Vector<T> & v)
{
Vector<T> d(v.size);
for(unsigned i=0;i<v.size;i++)
d.data[i]=data[i]-v.data[i];
return d;
}
template<class T>int Vector<T>::operator*(const Vector<T> & v)
{
int a=0;
for(unsigned i=0;i<v.size;i++)
a+=(v.data[i]*data[i]);
return a;
}
template<class T>unsigned Vector<T>::setSize(unsigned u)
{
if(size!=u)
{
T *np=new T[u];
assert(np!=0);
unsigned n=u<=size?u:size;
for(int i=0;i<n;i++)
np[i]=data[i];
delete[]data;
size=u;
data=np;
}
return size;
}
//2. vector.cpp
#include<iostream.h>
#include"Vector.h"
#include"assert.h"
void main()
{
Vector<int> a(3),v(3),d(3);
int c;
a[0]=1;a[1]=1;a[2]=4;v[0]=2;v[1]=3;v[2]=5;
c=a*v;
cout<<"c="<<c<<endl;
d=a+v;
for( int i=0;i<3;i++)
cout<<"d["<<i<<"]="<<d[i]<<" ";
cout<<endl;
d=a-v;
for(i=0;i<3;i++)
cout<<"d["<<i<<"]="<<d[i]<<" ";
cout<<endl;
}
第二题:
#include<iostream.h>
//模版类
template <class T>
T max(T x,T y)
{
return (x>y?x:y); // 找到较大值,这是两个数,你可以扩展到多个数
}
//主函数
void main()
{
cout<<max(2,5)<<","<<max(3.5,2.8)<<endl; // 输出比较结果
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询