PAT第二次上机题目
5-1
#include <iostream>
#include <cstdlib>
using namespace std;
template <class T> T maxn(T x[], int len)
{
int i;
T store = x[0];
int k = 0;
for (i = 0; i < len; i++)
{
if(x[i] > x[k]) k = i;
}
store = x[k];
return store;
}
class time0
{
private:
int hh,mm,ss;
public:
time0(int a = 0, int b = 0, int c = 0):hh(a),mm(b),ss(c){};
bool operator > (time0 &t);
void display();
};
void time0::display()
{
cout << hh << " " << mm << " " << ss << endl;
}
bool time0::operator > (time0 &t)
{
int pre = 0, beh = 0;
pre = hh * 3600 + mm * 60 + ss;
beh = t.hh * 3600 + t.mm * 60 + ss;
if(pre > beh)return true;
else return false;
}
class date
{
private:
int year,mouth,day;
public:
date(int a = 0, int b = 0, int c = 0):year(a),mouth(b),day(c){};
bool operator > (date &d);
void display();
};
void date::display()
{
cout << year << " " << mouth << " " << day << endl;
}
bool date::operator > (date &d)
{
int pre = 0, beh = 0;
pre = year * 365 + mouth * 30 + day;
beh = d.year * 365 + d.mouth * 30 + day;
if(pre > beh)return true;
else return false;
}
int intArray[100];
double douArray[100];
time0 timeArray[100];
date dateArray[100];
int main()
{
int ope;
int i,j;
while(cin >> ope)
{
if(ope == -1)break;
if(ope == 1)
{
int tot = 0;
while(1)
{
int w;
cin >> w;
if(w == 0)break;
intArray[tot++] = w;
}
double result = 0;
result = maxn<int> (intArray,tot);
cout << result << endl;
}
else if(ope == 2)
{
int tot = 0;
while(1)
{
double w;
cin >> w;
if(w == 0)break;
douArray[tot++] = w;
}
double result = 0;
result = maxn<double> (douArray,tot);
cout << result << endl;
}
else if(ope == 3)
{
int hh1,mm1,ss1;
int tot = 0;
while(1)
{
cin >> hh1;
if(hh1 == 0)break;
cin >> mm1 >> ss1;
time0 t(hh1,mm1,ss1);
timeArray[tot++] = t;
}
time0 result;
result = maxn<time0> (timeArray, tot);
result.display();
}
else if(ope == 4)
{
int hh1,mm1,ss1;
int tot = 0;
while(1)
{
cin >> hh1;
if(hh1 == 0)break;
cin >> mm1 >> ss1;
date t(hh1,mm1,ss1);
dateArray[tot++] = t;
}
date result;
result = maxn<date> (dateArray, tot);
result.display();
}
}
return 0;
}
5-2
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
template <class T> int addSet(T * myset, T elem,int len)
{
if(len > 100)
{
cout << "Full Set." << endl;
return len;
}
int i, j;
for(i = 0; i < len; i++)
{
if(*(myset + i) == elem)
{
cout << elem << " is already exist!" << endl;
return len;
}
}
*(myset + len) = elem;
cout << len-1 << endl;
len ++;
return len;
}
template <class T> int deleSet(T * myset, T elem, int len)
{
int i, j;
bool flag = false;
int beg = 1;
for(i = 0; i < len; i++)
{
if(*(myset + i) == elem)
{
flag = true;
beg = i;
break;
}
}
if(!flag)
{
cout << elem << " is not exist!" << endl;
return len;
}
cout << beg-1 << endl;
for(i = beg, j = beg + 1; j < len; i++, j++)
{
*(myset + i) = *(myset + j);
}
len --;
return len;
}
template <class T> int findElem(T * myset, T elem, int len)
{
int i, j;
for(i = 0; i < len; i++)
{
if(*(myset + i) == elem)
{
return i;
}
}
return -1;
}
int intSet[100];
double douSet[100];
string StrSet[100];
int main()
{
int intLen = 1, douLen = 1, strLen = 1;
int i;
int ope;
while(cin >> ope)
{
if(ope == 0)break;
if(ope == 1)
{
int nope, inum;
cin >> nope >> inum;
if(nope == 1)
{
intLen = addSet<int> (intSet, inum, intLen);
}
else if(nope == 2)
{
intLen = deleSet<int> (intSet, inum, intLen);
}
else if(nope == 3)
{
int judge = findElem<int> (intSet, inum, intLen);
if(judge == -1)
{
cout << inum << " is not exist!" << endl;
}
else
{
cout << judge-1 << endl;
}
}
}
else if(ope == 2)
{
int nope;
double inum;
cin >> nope >> inum;
if(nope == 1)
{
douLen = addSet<double> (douSet, inum, douLen);
}
else if(nope == 2)
{
douLen = deleSet<double> (douSet, inum, douLen);
}
else if(nope == 3)
{
int judge = findElem<double> (douSet, inum, douLen);
if(judge == -1)
{
cout << inum << " is not exist!" << endl;
}
else
{
cout << judge-1 << endl;
}
}
}
else if(ope == 3)
{
int nope;
string inum;
cin >> nope >> inum;
if(nope == 1)
{
strLen = addSet<string> (StrSet, inum, strLen);
}
else if(nope == 2)
{
strLen = deleSet<string> (StrSet, inum, strLen);
}
else if(nope == 3)
{
int judge = findElem<string> (StrSet, inum, strLen);
if(judge == -1)
{
cout << inum << " is not exist!" << endl;
}
else
{
cout << judge-1 << endl;
}
}
}
}
return 0;
}
5-3
(听说用5-2的代码也能过噢
#include <iostream>
#include <stdlib.h>
using namespace std;
template <class T> class MySet
{
private:
T data[100];
int count;
public:
MySet()
{
count = 0;
};
int addSet(T elem)
{
if(count > 100)
{
cout << "Full Set." << endl;
return count;
}
int i, j;
for(i = 0; i < count; i++)
{
if(data[i] == elem)
{
cout << elem << " is already exist!" << endl;
return count;
}
}
data[count] = elem;
cout << count << endl;
count ++;
return count;
};
int deleSet(T elem)
{
int i, j;
bool flag = false;
int beg = 1;
for(i = 0; i < count; i++)
{
if(data[i] == elem)
{
flag = true;
beg = i;
break;
}
}
if(!flag)
{
cout << elem << " is not exist!" << endl;
return count;
}
cout << beg << endl;
for(i = beg, j = beg + 1; j < count; i++, j++)
{
data[i] = data[j];
}
count --;
return count;
};
int findElem(T elem)
{
int i, j;
for(i = 0; i < count; i++)
{
if(data[i] == elem)
{
return i;
}
}
return -1;
};
};
//int MySet::addSet(T elem)
//int MySet::deleSet(T elem)
//int MySet::findElem(T elem)
int main()
{
MySet<int> intSet;
MySet<double> douSet;
MySet<string> strSet;
int intLen = 1, douLen = 1, strLen = 1;
int i;
int ope;
while(cin >> ope)
{
if(ope == 0)break;
if(ope == 1)
{
int nope, inum;
cin >> nope >> inum;
if(nope == 1)
{
intLen = intSet.addSet(inum);
}
else if(nope == 2)
{
intLen = intSet.deleSet(inum);
}
else if(nope == 3)
{
int judge = intSet.findElem(inum);
if(judge == -1)
{
cout << inum << " is not exist!" << endl;
}
else
{
cout << judge << endl;
}
}
}
else if(ope == 2)
{
int nope;
double inum;
cin >> nope >> inum;
if(nope == 1)
{
douLen = douSet.addSet(inum);
}
else if(nope == 2)
{
douLen = douSet.deleSet(inum);
}
else if(nope == 3)
{
int judge = douSet.findElem(inum);
if(judge == -1)
{
cout << inum << " is not exist!" << endl;
}
else
{
cout << judge << endl;
}
}
}
else if(ope == 3)
{
int nope;
string inum;
cin >> nope >> inum;
if(nope == 1)
{
strLen = strSet.addSet(inum);
}
else if(nope == 2)
{
strLen = strSet.deleSet(inum);
}
else if(nope == 3)
{
int judge = strSet.findElem(inum);
if(judge == -1)
{
cout << inum << " is not exist!" << endl;
}
else
{
cout << judge << endl;
}
}
}
}
return 0;
}
5-4
注意:(备注说明:分数为0时,表示成0z1m,如果结果为负数,那么分子取负数,分母为正数)
#include <iostream>
#include <cstdlib>
#include <sstream>
#include <cmath>
using namespace std;
int small(int a, int b)
{
if(a == 0 || b == 0)return 0;
int t;
if(a < b)
{
t = a; a = b; b = t;
}
int c = a % b;
while(c != 0)
{
a = b;
b = c;
c = a % b;
}
return b;
}
class FS
{
private:
int fz,fm;
public:
FS(int a = 0, int b = 0):fz(a),fm(b){};
FS operator + (const FS &f);
void display();
};
void FS::display()
{
bool flag = false;
if(fz * fm == 0)
{
cout << "0z1m" << endl;
return ;
}
if(fz * fm < 0)
{
flag = true;
}
if(fz < 0)fz = -fz;
if(fm < 0)fm = -fm;
if(flag)cout << "-";
cout << fz << "z" << fm << "m" << endl;
}
FS FS::operator + (const FS &f)
{
bool flag1 = false, flag2 = false; // false - true +
if(fz*fm < 0)flag1 = true;
if(f.fz*f.fm < 0)flag2 = true;
int newfz = 0,newfm = 0;
if(!flag1 && !flag2)
{
int common = 0;
if(fz == 0 || f.fz == 0)
{
if(fz == 0)
{
newfz = f.fz;
newfm = f.fm;
}
else if(f.fz == 0)
{
newfz = fz;
newfm = fm;
}
}
else
{
newfz = fz * f.fm + fm * f.fz;
newfm = fm * f.fm;
}
if(newfz != 0)
{
common = small(newfz,newfm);
newfz /= common;
newfm /= common;
}
}
else if(!flag1 && flag2)
{
int common = 0;
if(fz == 0 || f.fz == 0)
{
if(fz == 0)
{
newfz = f.fz;
newfm = f.fm;
}
else if(f.fz == 0)
{
newfz = fz;
newfm = fm;
}
}
else
{
newfz = fz * f.fm + fm * f.fz;
newfm = fm * f.fm;
}
if(newfz != 0)
{
common = small(newfz,newfm);
newfz /= common;
newfm /= common;
}
}
else if(flag1 && !flag2)
{
int common = 0;
if(fz == 0 || f.fz == 0)
{
if(fz == 0)
{
newfz = f.fz;
newfm = f.fm;
}
else if(f.fz == 0)
{
newfz = fz;
newfm = fm;
}
}
else
{
newfz = fz * f.fm + fm * f.fz;
newfm = fm * f.fm;
}
if(newfz != 0)
{
common = small(newfz,newfm);
newfz /= common;
newfm /= common;
}
}
else if(flag1 && flag2)
{
int common = 0;
newfz = - (fz * f.fm + fm * f.fz);
newfm = fm * f.fm;
if(newfz != 0)
{
common = small(newfz,newfm);
newfz /= common;
newfm /= common;
}
newfz = -newfz;
}
FS f1(newfz,newfm);
return f1;
}
int main()
{
int n;
int i,j,k;
cin >> n;
string s1,s2;
stringstream stream;
int sfz = 0, sfm = 0;
for(k = 1; k <= n; k++)
{
cin >> s1 >> s2;
string s;
for(i = 0; i < s1.length(); i++)
{
if(s1[i] == 'z')
{
stream << s;
stream >> sfz;
stream.clear();
s = "";
continue;
}
if(s1[i] == 'm')
{
stream << s;
stream >> sfm;
stream.clear();
s = "";
break;
}
s += s1[i];
}
FS c1(sfz,sfm);
s = "";
sfz = 0;
sfm = 0;
for(i = 0; i < s2.length(); i++)
{
if(s2[i] == 'z')
{
stream << s;
stream >> sfz;
stream.clear();
s = "";
continue;
}
if(s2[i] == 'm')
{
stream << s;
stream >> sfm;
stream.clear();
s = "";
break;
}
s += s2[i];
}
FS c2(sfz,sfm);
s = "";
sfz = 0;
sfm = 0;
FS c3 = c1 + c2;
c3.display();
}
return 0;
}
5-5
考虑的情况比较多,需要耐心。
#include <iostream>
#include <cstdlib>
#include <string>
#include <sstream>
using namespace std;
class Complex
{
private:
int real, imag;
public:
Complex(int a = 0, int b = 0):real(a), imag(b){};
void display();
Complex operator * (Complex &b);
};
void Complex::display()
{
if(real == 0 && imag == 0)
{
cout << "0" << endl;
return ;
}
else if(real == 0)
{
if(imag != 1 && imag != -1)
cout << imag << "i" << endl;
else if(imag == 1)
cout << "i" << endl;
else
cout << "-i" << endl;
return ;
}
else if(imag == 0)
{
cout << real << endl;
return ;
}
if(imag < 0)
{
if(imag != -1)
cout << real << imag << "i" << endl;
else cout << real << "-i" << endl;
}
else
{
if(imag != 1)
cout << real << "+" << imag << "i" << endl;
else if(imag == 1)
cout << real << "+i" << endl;
}
}
Complex Complex::operator * (Complex &b)
{
int creal = 0, cimag = 0;
creal = real * b.real - imag * b.imag;
cimag = real * b.imag + b.real * imag;
Complex c(creal, cimag);
return c;
}
int main()
{
string s1, s2;
int i;
while (cin >> s1 >> s2)
{
string s;
stringstream stream;
int areal = 0, aimag = 0;
int breal = 0, bimag = 0;
for (i = 0; i < s1.length(); i++)
{
if (i == 0 && s1[0] == '-')
{
s += '-';
continue;
}
if (s1[i] == '+' || s1[i] == '-')
{
stream << s;
stream >> areal;
stream.clear();
s = "";
if (s1[i] == '-')
s += '-';
continue;
}
if (s1[i] == 'i')
{
if(s == "-" || s == "")
{
if(s == "-")aimag = -1;
else aimag = 1;
s = "";
break;
}
stream << s;
stream >> aimag;
stream.clear();
s = "";
break;
}
s += s1[i];
}
if (s != "")
{
stream << s;
stream >> areal;
stream.clear();
s = "";
}
s = "";
for (i = 0; i < s2.length(); i++)
{
if (i == 0 && s2[0] == '-')
{
s += '-';
continue;
}
if (s2[i] == '+' || s2[i] == '-')
{
stream << s;
stream >> breal;
stream.clear();
s = "";
if (s2[i] == '-')
s += '-';
continue;
}
if (s2[i] == 'i')
{
if(s == "-" || s == "")
{
if(s == "-")bimag = -1;
else bimag = 1;
s = "";
break;
}
stream << s;
stream >> bimag;
stream.clear();
s = "";
break;
}
s += s2[i];
}
if (s != "")
{
stream << s;
stream >> breal;
stream.clear();
s = "";
}
Complex A(areal, aimag), B(breal, bimag);
Complex C = A * B;
//A.display();
//B.display();
C.display();
}
return 0;
}
//i -i
PAT第二次上机题目的更多相关文章
- SDN 第二次上机作业
SDN第二次上机作业 1.控制器floodlight所示可视化图形拓扑的截图,及主机拓扑连通性检测截图 拓扑 连通性 2.利用字符界面下发流表,使得'h1'和'h2' ping 不通 流表截图 连通性 ...
- 2019 SDN第二次上机作业
2019 SDN第二次上机作业 1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名.交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 创 ...
- 连连看游戏(dfs)【华为上机题目】
1 连连看游戏 今天同学给我做了道编程题目,貌似是华为的,题目描述大概是这样的: 给定一个连连看棋盘,棋盘上每个点都有各种图案(用非0数字表示),输入棋盘上的任意两个左标,判断这两个坐标对应的图案是否 ...
- Java第二次上机随笔
主要是一些原来不懂但是本次上机涉及到的内容... 一.空数组与数组为null的区别 1.空数组: int[] array = new int[0]; array.length == 0; 空数组是一个 ...
- ZOJ问题(2010浙江大学研究生复试上机题目[找规律] hdoj 3788)
ZOJ问题 pid=3788">点击打开链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 算法上机题目mergesort,priority queue,Quicksort,divide and conquer
1.Implement exercise 2.3-7. 2. Implement priority queue. 3. Implement Quicksort and answer the follo ...
- 题解:2018级算法第二次上机 Zexal的排座位
题目描述: 样例: 实现解释: 一道看似复杂但实际既是斐波那契变形的题目 知识点:递推,斐波那契 通过问题的描述,可以得到以下规律:(除了座位数为一时)男生坐最后时,倒数第二个一定是女生:女生坐最后, ...
- C++第二次上机5-5
建立一个复数类Complex,实数和虚数是其私有数据成员: 建立复数类的无参和参数化构造函数: 建立一个 *(乘号)的运算符重载,以便于对两个复数直接进行乘法运算: 建立输出函数void displa ...
- 2016级算法第二次上机-G.ModricWang's Real QuickSort
873 思路 这是一道非常基础的题,目的是帮助大家回顾快排相关的知识.大家完成此题之后应该就对快排有比较深刻的印象了. 对于整个快排的流程,题目描述中已经给了清晰完整的伪代码.需要自己加工的部分就是, ...
随机推荐
- 【spring mvc】application context的生命周期
上一次讲application context中bean的生命周期,后面贴了一部分代码,但根本没理解代码意思,有幸在博客园看到一篇关于这部分的代码解析,特别长,特此做了一些整理笔记,并附上链接:htt ...
- angular.element 动态添加和删除元素
addClass()-为每个匹配的元素添加指定的样式类名after()-在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点append()-在每个匹配元素里面的末尾处插入参数内容att ...
- sql server 中的分区函数用法(partition by 字段)
partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没 ...
- JSON—序列化
表单数据的序列化 用SerializeArray()将有效控件序列化为JSON对象数组? 包含name和value两个属性 SerializeArray()检测一组表单元素中的有效控件? 1.没有 ...
- python性能分析(一)——使用timeit给你的程序打个表吧
前言 我们可以通过查看程序核心算法的代码,得知核心算法的渐进上界或者下界,从而大概估计出程序在运行时的效率,但是这并不够直观,也不一定十分靠谱(在整体程序中仍有一些不可忽略的运行细节在估计时被忽略了) ...
- ArcGIS 10——地理数据库管理GIS数据
写本文的最初意向是当前正在进行的项目中有实现ESRI版本化数据管理的功能模块,碰到一些棘手的问题,几经周折还是决定系统学习ArcGIS10的帮助文档.(文章摘抄的比较多) 地理数据库是用于保存数据集集 ...
- Java设计模式应用——组合模式
组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节 ...
- Linux服务器配置---安装telnet
安装telnet telnet是标准的远程登录协议,历史悠久.但是telnet的对话数据没有加密,甚至用户名和密码都是明文显示,这样的服务风险极大.目前大多数系统多已经不会再安装这个服务了, ...
- thinkphp相关
thinkphp相关1.thinkphp调试sql方法:echo M("table_name")->getLastSql(); 2. 条件查询设置多个条件参数的写法:(1). ...
- Linux Touch命令的8种使用技巧
Linux touch命令不仅可以用于在Linux上创建空文件. 您可以使用它来更改现有文件的时间戳,包括其访问权限和修改时间. 本文介绍了8种可以通过Linux终端使用touch命令的方案. 我们在 ...