数码的类模板,求助注释处引用为啥不能够用

By admin in 4858.com on 2019年8月24日

Problem A: 数量的类模板 求助注释处援引为何不能够用,problem注释

Problem A: 数量的类模板

Time Limit:1 SecMemory Limit:128 MB
Submit:1140Solved:788
[Submit][Status][Web Board]

Problem A: 数量的类模板

Time Limit: 1 Sec  Memory
Limit: 128 MB
Submit: 1140  Solved: 788
[Submit][Status][Web
Board]

 

Problem A: 数量的类模板

Time Limit: 1 Sec  Memory
Limit: 128 MB
Submit: 1140  Solved: 788
[Submit][Status][Web Board]

Description

概念二个类模板Data,用于包装C++中的基本数据类型int和double。它回顾:

  1. 数据成员value为该目的所包装的值。

  2. 无参构造函数(起首化value为0)和带参构造函数。

3.
重载的运算符:>、<、+以及<<。个中”+”重临和,不改换五个操作数的值。

  1. 成员函数setValue用于安装value的值。

概念另七个类模板GetResult,它独有3个静态分子函数(以下“T”为项目参数):

1.static Data<T> getSum(Data<T> *arr, int
num):求存款和储蓄在arr中的num个Data对象的和,并赶回由那一个和整合的贰个Data对象。

  1. static Data<T> getMax(Data<T> *arr, int
    num):求存款和储蓄在arr中的num个Data对象的最大值,并重返这么些最大值对应的对象。

3.static Data<T> getMin(Data<T> *arr, int
num):求存储在arr中的num个Data对象的一丝一毫值,并回到这些最小值对应的靶子。

Description

概念八个类模板Data,用于包装C++中的基本数据类型int和double。它包含:

  1. 数码成员value为该指标所包装的值。

  2. 无参构造函数(初叶化value为0)和带参构造函数。

3.
重载的运算符:>、<、+以及<<。当中”+”重回和,不退换八个操作数的值。

  1. 成员函数setValue用于安装value的值。

概念另七个类模板GetResult,它独有3个静态分子函数(以下“T”为项目参数):

1. static Data<T> getSum(Data<T> *arr, int
num):求存款和储蓄在arr中的num个Data对象的和,并重返由那些和构成的四个Data对象。

  1. static Data<T> getMax(Data<T> *arr, int
    num):求存储在arr中的num个Data对象的最大值,并回到那几个最大值对应的对象。

4858.com,3.  static Data<T> getMin(Data<T> *arr, int
num):求存储在arr中的num个Data对象的小不点儿值,并赶回那几个最小值对应的靶子。

 

 

Description

概念叁个类模板Data,用于包装C++中的基本数据类型int和double。它回顾:

  1. 数据成员value为该对象所包装的值。

  2. 无参构造函数(初叶化value为0)和带参构造函数。

3.
重载的运算符:>、<、+以及<<。个中”+”重回和,不退换五个操作数的值。

  1. 成员函数setValue用于安装value的值。

概念另三个类模板GetResult,它独有3个静态分子函数(以下“T”为项目参数):

1. static Data<T> getSum(Data<T> *arr, int
num):求存款和储蓄在arr中的num个Data对象的和,并回到由那么些和烧结的三个Data对象。

  1. static Data<T> getMax(Data<T> *arr, int
    num):求存款和储蓄在arr中的num个Data对象的最大值,并赶回那个最大值对应的靶子。

3.  static Data<T> getMin(Data<T> *arr, int
num):求存款和储蓄在arr中的num个Data对象的矮小值,并再次来到那个最小值对应的指标。

 

Input

输入分多行。

第一行M>0意味着有M个测验用例。

除非的M行,每行起头有贰个字母i或d,第2个是正整数N>0。若是第三个字母是i,则意味本行富含N个int类型的数目;假如第3个字母为d,则表示本行有N个double类型的数码。

Input

输入分多行。

先是行M>0象征有M个测量检验用例。

独有的M行,每行开端有贰个字母i或d,第二个是正整数N>0。假若第二个假名是i,则代表本行李包裹涵N个int类型的数据;倘若第二个字母为d,则意味着本行有N个double类型的数目。

 

 

Input

输入分多行。

首先行M>0意味有M个测量试验用例。

独有的M行,每行初步有一个字母i或d,第一个是正整数N>0。倘诺第八个字母是i,则表示本行包涵N个int类型的多寡;即便第三个字母为d,则象征本行有N个double类型的数量。

 

Output

除前6行输出外,其余输出的行数等于M。个中每一行输出3个数据:对应测验用例的最大值、最小值以及和。实数输出定点小数,且只输出2位小数。

Output

除前6行输出外,其余输出的行数等于M。个中每一行输出3个数据:对应测量检验用例的最大值、最小值以及和。实数输出定点小数,且只输出2位小数。

 

 

Output

除前6行输出外,其余输出的行数等于M。在那之中每一行输出3个数据:对应测量检验用例的最大值、最小值以及和。实数输出定点小数,且只输出2位小数。

 

Sample Input

3i 3 1 2 3d 3 1.1 2.2 3.3i 1 10

Sample Input

3 i 3 1 2 3 d 3 1.1 2.2 3.3 i 1 10

 

Sample Input

3 i 3 1 2 3 d 3 1.1 2.2 3.3 i 1 10

Sample Output

a + b = 30max = 20min = 10c + d = -0.96max = 3.14min = -4.103 1 63.30
1.10 6.6010 10 10

Sample Output

a + b = 30 max(a, b) = 20 min(a, b) = 10 c + d
= -0.96 max(c, d) = 3.14 min(c, d) = -4.10 3 1 6 3.30 1.10 6.60 10 10 10

 

Sample Output

a + b = 30 max(a, b) = 20 min(a, b) = 10 c + d
= -0.96 max(c, d) = 3.14 min(c, d) = -4.10 3 1 6 3.30 1.10 6.60 10 10 10

HINT

#include <iostream>
#include <iomanip>
using namespace std;
template <class T>
class Data
{
private:
T value;
public:
Data():value {}
Data:value {}
bool operator>(Data &b)
数码的类模板,求助注释处引用为啥不能够用。{
if(value>b.value) return 1;
else return 0;
}
bool operator<(Data &b)
{
if(value<b.value) return 1;
else return 0;
}
T operator+(Data &b)
{
return value+b.value;
}
void setValue
{
value=u;
}

T getv() {return value;}
friend ostream &operator<<(ostream &os, Data<T>
&b)//****怎么这里用了援引会报错?
{
os<<fixed<<setprecision<<b.value;
return os;
}
};
template <class T>
class GetResult
{
public:
static Data<T> getSum(Data<T> *arr, int num)
{
T sum=0;
for(int i=0; i<num; i++)
sum+=arr[i].getv();
Data<T> D;
return D;
}
static Data<T> getMax(Data<T> *arr, int num)
{
T max=arr[0].getv();
for(int i=1; i<num; i++)
max=max>arr[i].getv()?max:arr[i].getv();
Data<T> D;
return D;
}
static Data<T> getMin(Data<T> *arr, int num)
{
T max=arr[0].getv();
for(int i=1; i<num; i++)
max=max<arr[i].getv()?max:arr[i].getv();
Data<T> D;
return D;
}
};
int main()
{
Data<int> iData[1001];
Data<double> dData[1001];
int cases, num;
char ch;
int u;
double v;
Data<int> a, b;
Data<double> c, d;
cout<<“a + b = “<<<<endl;
cout<<“max = “<<(a > b ? a : b)<<endl;
cout<<“min = “<<(a < b ? a : b)<<endl;
cout<<“c + d = “<<<<endl;
cout<<“max = “<<(c > d ? c : d)<<endl;
cout<<“min = “<<(c < d ? c : d)<<endl;
cin>>cases;
for (int i = 0; i < cases; i++)
{
cin>>ch;
cin>>num;
for (int j = 0; j < num; j++)
{
if (ch == ‘i’)
{
cin>>u;
iData[j].setValue;
}
else if (ch == ‘d’)
{
cin>>v;
dData[j].setValue;
}
}
if (ch == ‘i’)
{
cout<<GetResult<int>::getMax(iData, num);
cout<<” “<<GetResult<int>::getMin(iData, num);
cout<<” “<<GetResult<int>::getSum(iData,
num)<<endl;
}
else if (ch == ‘d’)
{
cout<<GetResult<double>::getMax(dData, num);
cout<<” “<<GetResult<double>::getMin(dData, num);
cout<<” “<<GetResult<double>::getSum(dData,
num)<<endl;
}
}
return 0;
}

HINT

 

#include <iostream>
#include <iomanip>
using namespace std;
template <class T>
class Data
{
private:
T value;
public:
Data():value(0) {}
Data(T b):value(b) {}
bool operator>(Data &b)
{
if(value>b.value) return 1;
else return 0;
}
bool operator<(Data &b)
{
if(value<b.value) return 1;
else return 0;
}
T operator+(Data &b)
{
return value+b.value;
}
void setValue(T u)
{
value=u;
}

T getv() {return value;}
friend ostream &operator<<(ostream &os, Data<T>
&b)//****干什么那边用了引用会报错?(&b)
{
os<<fixed<<setprecision(2)<<b.value;
return os;
}
};
template <class T>
class GetResult
{
public:
static Data<T> getSum(Data<T> *arr, int num)
{
T sum=0;
for(int i=0; i<num; i++)
sum+=arr[i].getv();
Data<T> D(sum);
return D;
}
static Data<T> getMax(Data<T> *arr, int num)
{
T max=arr[0].getv();
for(int i=1; i<num; i++)
max=max>arr[i].getv()?max:arr[i].getv();
Data<T> D(max);
return D;
}
static Data<T> getMin(Data<T> *arr, int num)
{
T max=arr[0].getv();
for(int i=1; i<num; i++)
max=max<arr[i].getv()?max:arr[i].getv();
Data<T> D(max);
return D;
}
};
int main()
{
Data<int> iData[1001];
Data<double> dData[1001];
int cases, num;
char ch;
int u;
double v;
Data<int> a(10), b(20);
Data<double> c(3.14), d(-4.1);
cout<<“a + b = “<<(a + b)<<endl;
cout<<“max(a, b) = “<<(a > b ? a : b)<<endl;
cout<<“min(a, b) = “<<(a < b ? a : b)<<endl;
cout<<“c + d = “<<(c + d)<<endl;
cout<<“max(c, d) = “<<(c > d ? c : d)<<endl;
cout<<“min(c, d) = “<<(c < d ? c : d)<<endl;
cin>>cases;
for (int i = 0; i < cases; i++)
{
cin>>ch;
cin>>num;
for (int j = 0; j < num; j++)
{
if (ch == ‘i’)
{
cin>>u;
iData[j].setValue(u);
}
else if (ch == ‘d’)
{
cin>>v;
dData[j].setValue(v);
}
}
if (ch == ‘i’)
{
cout<<GetResult<int>::getMax(iData, num);
cout<<” “<<GetResult<int>::getMin(iData, num);
cout<<” “<<GetResult<int>::getSum(iData,
num)<<endl;
}
else if (ch == ‘d’)
{
cout<<GetResult<double>::getMax(dData, num);
cout<<” “<<GetResult<double>::getMin(dData, num);
cout<<” “<<GetResult<double>::getSum(dData,
num)<<endl;
}
}
return 0;
}

尖端语言程序设计II

HINT

#include <iostream>
#include <iomanip>
using namespace std;
template <class T>
class Data
{
private:
T value;
public:
Data():value(0) {}
Data(T b):value(b) {}
bool operator>(Data &b)
{
if(value>b.value) return 1;
else return 0;
}
bool operator<(Data &b)
{
if(value<b.value) return 1;
else return 0;
}
T operator+(Data &b)
{
return value+b.value;
}
void setValue(T u)
{
value=u;
}

T getv() {return value;}
friend ostream &operator<<(ostream &os, Data<T>
&b)//****缘何这边用了引用会报错?(&b)
{
os<<fixed<<setprecision(2)<<b.value;
return os;
}
};
template <class T>
class GetResult
{
public:
static Data<T> getSum(Data<T> *arr, int num)
{
T sum=0;
for(int i=0; i<num; i++)
sum+=arr[i].getv();
Data<T> D(sum);
return D;
}
static Data<T> getMax(Data<T> *arr, int num)
{
T max=arr[0].getv();
for(int i=1; i<num; i++)
max=max>arr[i].getv()?max:arr[i].getv();
Data<T> D(max);
return D;
}
static Data<T> getMin(Data<T> *arr, int num)
{
T max=arr[0].getv();
for(int i=1; i<num; i++)
max=max<arr[i].getv()?max:arr[i].getv();
Data<T> D(max);
return D;
}
};
int main()
{
Data<int> iData[1001];
Data<double> dData[1001];
int cases, num;
char ch;
int u;
double v;
Data<int> a(10), b(20);
Data<double> c(3.14), d(-4.1);
cout<<“a + b = “<<(a + b)<<endl;
cout<<“max(a, b) = “<<(a > b ? a : b)<<endl;
cout<<“min(a, b) = “<<(a < b ? a : b)<<endl;
cout<<“c + d = “<<(c + d)<<endl;
cout<<“max(c, d) = “<<(c > d ? c : d)<<endl;
cout<<“min(c, d) = “<<(c < d ? c : d)<<endl;
cin>>cases;
for (int i = 0; i < cases; i++)
{
cin>>ch;
cin>>num;
for (int j = 0; j < num; j++)
{
if (ch == ‘i’)
{
cin>>u;
iData[j].setValue(u);
}
else if (ch == ‘d’)
{
cin>>v;
dData[j].setValue(v);
}
}
if (ch == ‘i’)
{
cout<<GetResult<int>::getMax(iData, num);
cout<<” “<<GetResult<int>::getMin(iData, num);
cout<<” “<<GetResult<int>::getSum(iData,
num)<<endl;
}
else if (ch == ‘d’)
{
cout<<GetResult<double>::getMax(dData, num);
cout<<” “<<GetResult<double>::getMin(dData, num);
cout<<” “<<GetResult<double>::getSum(dData,
num)<<endl;
}
}
return 0;
}

A: 数量的类模板
求助注释处引用为啥无法用,problem注释 Problem A: 数量的类模板 Time
Limit:1 Sec Memory Limit:128 MB Submit:1140 Solved:788 [Sub…

实验报告四

 

 

 

 

 

 

 

姓名:许恺

学号:2014011329

日期:6月26日

 

 

 

 

 

 

 

1. 实施指标

构建学生学籍系统,使用c++知识,又补充和查找的效应

2. 布置思路

确立四个类,student积存读出来的文件内容,change对文件进行补给和读取,seek举办搜寻和打字与印刷。

3. 代码达成

主函数:

// c++第肆遍报告.cpp :定义调控台应用程序的入口点

//

 

#include “stdafx.h”

#include <iostream>

#include <fstream>

#include “student.h”

#include “change.h”

#include “seek.h”

const int N=1000;

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int t,ch;

char f[50];

student* stu=new student[N]; 学生消息指标

change change1; 使用类的目的

seek seek1;

cout<<“Hello! Welcome to Student Information System!”<<endl;

cout<<“Please input student information file:”;

cin>>f; 输入文件名

fstream fp; 文件

fp.open(f,ios::_Nocreate|ios::out|ios::in);

t=change1.read(fp,stu);

cout<<“The file contians total “<<t<<” students’
information\n”<<endl;

do

{

cout<<“Please select the following one function by input its
number”<<endl;

cout<<“————————————————————-“<<endl;

cout<<“[1] input student information”<<endl;

cout<<“[2] query a student’s information by his or her
name”<<endl;

cout<<“[3] query students’ list according to scope of
scores”<<endl;

cout<<“[4] quit the program”<<endl;

cout<<“—————————————————————-“<<endl;

cin>>ch;

if(ch==1)

  t=change1.reinput(fp,stu,t);

if(ch==2)

  seek1.two(stu,t);

if(ch==3)

  seek1.three(stu,t);

if(ch==4)

  return 0;

}while(1);

return 0;

}

 

student.h://储存文件的内容作为桥梁

#pragma once

#include <fstream>

#include <iomanip>

#include <iostream>

using namespace std;

class student

{

public:

int getnum(){return num;};

void getnum(int a){this->num=a;};

char* getname(){return name;};

char* getsex(){return sex;};

int getage(){return age;};

void getage(int b){this->age=b;};

char* getadd(){return address;};

int getadd(char *str)

{

int len;

strcpy_s(address,str);

len=strlen(str);

return len;

};

private:

int num;

char name[20];

char sex[5];

int age;

char address[1000];

};

 

change.h:    //读文件和写入消息

#pragma once

//#pragma comment( lib, “opencv_highgui244d.lib”)

//#pragma comment( lib, “opencv_core244d.lib”)

#include “student.cpp”

#include <fstream>

class change

{

public:

int read(std::fstream &f,student *stu);

int reinput(std::fstream &f,student *stu,int a);

};

 

change.cpp:

#include “StdAfx.h”

#include “change.h”

#include “student.h”

#include <iomanip>

#include <iostream>

#include <string>

int read(fstream &f,student *stu)

{

int a,old;

for(a=0;;a++)

{

char str[1000];

int num=0;

f>>setw(10)>>num;

if(num==0)

  break;

stu[a].getnum(num);

f>>setw(20)>>stu[a].getname();

f>>setw(5)>>stu[a].getsex();

f>>setw(5)>>old;

stu[a].getage(old);

f.getline(str,1000,’\n’);

stu[a].getadd(str);

}

return a;

}

int reinput(fstream &f,student *stu,int a)

{

char c;

do

{

a++;

int b,o,len;

char str[1000];

f.seekg(0,ios::end);

f<<“\n”;

cout<<“Please input student’s information:”<<endl;

cout<<“num:”;

cin>>b;

stu[a].getnum(b);

cout<<“name:”;

cin>>stu[a].getname();

cout<<“sex:”;

cin>>stu[a].getsex();

cout<<“old:”;

cin>>o;

stu[a].getage(o);

cout<<“address:”;

cin>>str;

cout<<“_____________________________________________”<<endl;

cout<<“Are you sure to add the information?(Y/N):”;

cin>>c;

if(c==’Y’)

{

len=stu[a].getadd(str);

f<<setw(10)<<setiosflags(ios::left)<<b;      

f<<setw(20)<<setiosflags(ios::left)<<stu[a].getname();

f<<setw(5)<<setiosflags(ios::left)<<stu[a].getsex();

f<<setw(5)<<setiosflags(ios::left)<<o;

f<<setw(len)<<str<<endl;

cout<<“The file has “<<a+1<<” students.”<<endl;

}

else

{

cout<<“The file has “<<a<<” students.”<<endl;

stu[a].getnum(0);

memset(stu[a].getname(),0,20);

memset(stu[a].getsex(),0,5);

stu[a].getage(0);

memset(str,0,1000);

stu[a].getadd(str);

}

cout<<“Do you continute to input another information?(Y/N):”;

cin>>c;

}while(c==’Y’);

return a;

}

 

seek.h://依据姓名查找和年龄范围

#pragma once

#include “student.h”

class seek

{

public:

void two(student *stu,int t);

void three(student *stu,int t);

};

 

seek.cpp:

#include “StdAfx.h”

#include “seek.h”

#include “student.h”

void seek::two(student *stu,int t)

{

char c;

do

{

int a,b=0,s[100];

char name[20];

cout<<“Please input the student’s name:”;

cin>>name;

for(a=0;a<20;a++)

  if(name[a]==’\0′)

    break;

for(;a<20;a++)

  name[a]=’ ‘;

name[19]=’\0′;

for(a=0;a<t;a++)

{

if(strcmp(stu[a].getname(),name)==0)

{

s[b]=a;

b++;

}

}

cout<<“Search “<<b<<” students.”<<endl;

cout<<“————————————“<<endl;

for(a=0;a<b;a++)

{

cout<<“num:”;

cout<<stu[a].getnum()<<endl;

cout<<“name:”;

cout<<stu[a].getname()<<endl;

cout<<“sex:”;

cout<<stu[a].getsex()<<endl;

cout<<“age:”;

cout<<stu[a].getage()<<endl;

cout<<“address:”;

cout<<stu[a].getadd()<<endl;

}

cout<<“————————————————————-“<<endl;

cout<<“Do you continue to query another student’s
information?(Y/N):”;

cin>>c;

}while(c==’Y’);

}

void seek::three(student *stu,int t)

{

char c;

do

{

int b=0,a,min,max,s[1000];

cout<<“Please input the scope of age:”<<endl;

cout<<“Min-age:”;

cin>>min;

cout<<“Max-age:”;

cin>>max;

for(a=0;a<t;a++)

{

if(stu[a].getage()<=max&&stu[a].getage()>=min)

{

s[b]=a;

b++;

}

}

cout<<“Search “<<b<<” students.”<<endl;

cout<<“——————————————-“<<endl;

for(a=0;a<b;a++)

{

cout<<setw(10)<<setiosflags(ios::left)<<stu[s[a]].getnum();
     

cout<<setw(20)<<setiosflags(ios::left)<<stu[s[a]].getname();

cout<<setw(5)<<setiosflags(ios::left)<<stu[s[a]].getsex();

cout<<setw(5)<<setiosflags(ios::left)<<stu[s[a]].getage();

cout<<setw(strlen(stu[s[a]].getadd()))<<stu[s[a]].getadd()<<endl;

}

cout<<“———————————————–“<<endl;

cout<<“Do you continue to query another scope?(Y/N):”;

cin>>c;

}while(c==’Y’);

}

 4858.com 1

4858.com 2

4858.com 3

 

4. 实行结果及剖析

前后相继还恐怕有众多青黄不接,需求立异,有个别难点其实难以解决,还需继续全力,望老师谅解。

 

 (笔者c,那报告大一写的,那tm一看正是抄的呀,自个儿立时测度都羞愧的娇羞写结果分析了23333333,太傻太天真~)

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有