A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

UVA - 12412

题目传送门

emmmm,不想表达什么,udbug上的数据全过,可就是WA。。。。

AC了的代码(大佬的代码)

#include <bits/stdc++.h>
using namespace std;const string subject[4]={"Chinese","Mathematics","English","Programming"};struct abc{string sid,cid,name;int goal[4];int tot;
};int ope;
vector<abc> v;
vector<abc> temp;
map<string,int> ranking;void output_message(){cout<<"Welcome to Student Performance Management System (SPMS)."<<endl<<endl;cout<<"1 - Add"<<endl;cout<<"2 - Remove"<<endl;cout<<"3 - Query"<<endl;cout<<"4 - Show ranking"<<endl;cout<<"5 - Show Statistics"<<endl;cout<<"0 - Exit"<<endl<<endl;
}void tip(int idx){if (idx==1) cout<<"Please enter the SID, CID, name and four scores. Enter 0 to finish."<<endl;if (idx==2) cout<<"Please enter SID or name. Enter 0 to finish."<<endl;if (idx==3) cout<<"Please enter SID or name. Enter 0 to finish."<<endl;if (idx==4) cout<<"Showing the ranklist hurts students' self-esteem. Don't do that."<<endl;if (idx==5) cout<<"Please enter class ID, 0 for the whole statistics."<<endl;
}bool found_student_by_sid(string sid){for (abc temp:v) if (temp.sid==sid) return true;return false;
}int _remove(string par,int p){int cnt = 0;vector<abc> newv;newv.clear();for (int i = 0;i < (int) v.size();i++){if ( (p==0 && v[i].sid == par) || (p==1 && v[i].name == par)  ){cnt++;}else newv.push_back(v[i]);}v.resize((int)newv.size());v = newv;return cnt;
}bool cmp(abc a,abc b){return a.tot>b.tot;
}int main(){//freopen("/home/ccy/rush.txt","r",stdin);//freopen("/home/ccy/rush_out.txt","w",stdout);ios::sync_with_stdio(0),cin.tie(0);while (1){output_message();cin >> ope;if (ope==1){while(1){tip(1);abc temp;cin >> temp.sid;if (temp.sid=="0") break;temp.tot = 0;cin >> temp.cid >> temp.name;for (int i = 0;i < 4;i++){cin >> temp.goal[i];temp.tot+=temp.goal[i];}if (found_student_by_sid(temp.sid))cout<<"Duplicated SID."<<endl;elsev.push_back(temp);}}if (ope==2){while (1){tip(2);string s;cin >> s;if (s=="0") break;int p = 0;if (s[0]>='A' && s[0]<='Z') p = 1;cout<<_remove(s,p)<<" student(s) removed."<<endl;}}if (ope==3){while (1){tip(3);string s;cin >> s;if (s=="0") break;temp.resize((int)v.size());for (int i = 0;i < (int)v.size();i++) temp[i] = v[i];sort(temp.begin(),temp.end(),cmp);for (int i = 0;i < (int)v.size();i++){int cur = i+1,j = i;ranking[temp[i].sid] = cur;while (j+1<(int)v.size() && temp[j+1].tot==temp[i].tot) {j++;ranking[temp[j].sid] = cur;}i = j;}int p = 0;if (s[0]>='A' && s[0]<='z') p = 1;for (int i = 0;i < (int)v.size();i++){if ( (p==0 && v[i].sid == s) || (p==1 && v[i].name==s) ){cout<<ranking[v[i].sid]<<" ";cout<<v[i].sid<<" "<<v[i].cid<<" "<<v[i].name<<" ";for (int j = 0;j < 4;j++) cout<<v[i].goal[j]<<" ";cout<<v[i].tot<<" ";cout<<fixed<<setprecision(2)<<1.0*v[i].tot/4.0+(1e-5)<<endl;}}}}if (ope==4) tip(4);if (ope==5){tip(5);string s;cin >> s;for (int i = 0;i < 4;i++){int cntb60 = 0,cntl60 = 0,tot =0,cnt = 0;for (int j = 0;j < (int)v.size();j++){if (v[j].cid==s || s=="0"){if (v[j].goal[i]>=60){cntb60++;}else cntl60++;tot+=v[j].goal[i];cnt++;}}cout<<subject[i]<<endl;cout<<"Average Score: ";cout<<fixed<<setprecision(2)<<1.0*tot/(1.0*cnt)+(1e-5)<<endl;cout<<"Number of passed students: "<<cntb60<<endl;cout<<"Number of failed students: "<<cntl60<<endl;cout<<endl;}cout<<"Overall:"<<endl;int cnt[5]={0};for (int i = 0;i < (int)v.size();i++)if (v[i].cid==s || s=="0"){int temp = 0;for (int j = 0;j < 4;j++){if (v[i].goal[j]>=60) temp++;}cnt[temp]++;}cout<<"Number of students who passed all subjects: "<<cnt[4]<<endl;for (int i = 3;i >= 1;i--) cnt[i]+=cnt[i+1];for (int i = 3;i >= 1;i--)cout<<"Number of students who passed "<<i<<" or more subjects: "<<cnt[i]<<endl;cout<<"Number of students who failed all subjects: "<<cnt[0]<<endl;cout<<endl;}if (ope==0){break;}}return 0;
}

我的WA了的代码(心塞)

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
struct node
{char SID[15];int CID;char name[15];int Chi;int Eng;int Math;int Pra;int all;double average;bool ju;int paiming;int numpass;int id;
}Stu[1000];
bool cmp(node a,node b)
{return a.all>b.all;
}
bool cmp1(node a,node b)
{return a.id<b.id;
}
int cnt;
void miue()
{printf("Welcome to Student Performance Management System (SPMS).\n\n");printf("1 - Add\n");printf("2 - Remove\n");printf("3 - Query\n");printf("4 - Show ranking\n");printf("5 - Show Statistics\n");printf("0 - Exit\n\n");
}
int choice_1()
{printf("Please enter the SID, CID, name and four scores. Enter 0 to finish.\n");char a[15];char nape[15];int b;int c1,c2,c3,c4;scanf("%s",a);if(a[0]=='0'&&strlen(a)==1)return 0;scanf("%d %s %d %d %d %d",&b,nape,&c1,&c2,&c3,&c4);rep(i,1,cnt) {if(strlen(Stu[i].SID)!=0&&Stu[i].ju==false) continue;if(strcmp(Stu[i].SID,a)==0) {printf("Duplicated SID.\n");return 1;}}cnt++;strcpy(Stu[cnt].SID,a);Stu[cnt].CID=b;strcpy(Stu[cnt].name,nape);Stu[cnt].Chi=c1;Stu[cnt].Math=c2;Stu[cnt].Eng=c3;Stu[cnt].Pra=c4;Stu[cnt].all=c1+c2+c3+c4;Stu[cnt].average=(double)Stu[cnt].all/4.0;Stu[cnt].ju=true;int k=4;if(c1<60) k--;if(c2<60) k--;if(c3<60) k--;if(c4<60) k--;Stu[cnt].numpass=k;Stu[cnt].id=cnt;return 1;
}
int choice_2()
{printf("Please enter SID or name. Enter 0 to finish.\n");char s[15];int num=0;scanf("%s",s);if(s[0]=='0'&&strlen(s)==1) return 0;if(s[0]>='A'&&s[0]<='Z'){rep(i,1,cnt) {if(Stu[i].ju==false) continue;if(strcmp(Stu[i].name,s)==0) {Stu[i].ju=false;num++;}}}else {rep(i,1,cnt) {if(Stu[i].ju==false) continue;if(strcmp(Stu[i].SID,s)==0) {Stu[i].ju=false;num++;}}}printf("%d student(s) removed.\n",num);return 1;
}
int choice_3()
{sort(Stu+1,Stu+cnt+1,cmp);int np1=1,np2=1;int nape;int i=1;while(!Stu[i].ju) i++;Stu[i].paiming=np1;nape=Stu[i].all;i++;for(;i<=cnt;i++) {if(Stu[i].ju==false) continue;else {if(Stu[i].all==nape) {Stu[i].paiming=np1;np2++;}else {np2++;nape=Stu[i].all;Stu[i].paiming=np2;np1=np2;}}}sort(Stu+1,Stu+1+cnt,cmp1);printf("Please enter SID or name. Enter 0 to finish.\n");char s[15];scanf("%s",s);if(s[0]=='0'&&strlen(s)==1) return 0;if(s[0]>='A'&&s[0]<='Z'){rep(i,1,cnt) {if(strcmp(Stu[i].name,s)==0&&Stu[i].ju==true) {printf("%d %s %d %s %d %d %d %d %d %.2f\n",Stu[i].paiming,Stu[i].SID,Stu[i].CID,Stu[i].name,Stu[i].Chi,Stu[i].Math,Stu[i].Eng,Stu[i].Pra,Stu[i].all,Stu[i].average);}}}else {rep(i,1,cnt) {if(strcmp(Stu[i].SID,s)==0&&Stu[i].ju==true) {printf("%d %s %d %s %d %d %d %d %d %.2f\n",Stu[i].paiming,Stu[i].SID,Stu[i].CID,Stu[i].name,Stu[i].Chi,Stu[i].Math,Stu[i].Eng,Stu[i].Pra,Stu[i].all,Stu[i].average);}}}return 1;
}
void choice_4()
{printf("Showing the ranklist hurts students' self-esteem. Don't do that.\n");
}
void choice_5()
{printf("Please enter class ID, 0 for the whole statistics.\n");int ClassID;double num=0.0;double allC=0.0;double allM=0.0;double allE=0.0;double allP=0.0;double aveC=0.0;double aveM=0.0;double aveE=0.0;double aveP=0.0;int numPC=0,numPM=0,numPE=0,numPP=0;int numFC=0,numFM=0,numFE=0,numFP=0;int pass4=0,pass3=0,pass2=0,pass1=0,pass0=0;scanf("%d",&ClassID);if(ClassID!=0) {rep(i,1,cnt) {if(Stu[i].ju==false) continue;if(Stu[i].CID==ClassID) {allC=allC+Stu[i].Chi;allM=allM+Stu[i].Math;allE=allE+Stu[i].Eng;allP=allP+Stu[i].Pra;if(Stu[i].Chi>=60) numPC++;else numFC++;if(Stu[i].Math>=60) numPM++;else numFM++;if(Stu[i].Eng>=60) numPE++;else numFE++;if(Stu[i].Pra>=60) numPP++;else numFP++;if(Stu[i].numpass==4) pass4++;if(Stu[i].numpass==3) pass3++;if(Stu[i].numpass==2) pass2++;if(Stu[i].numpass==1) pass1++;if(Stu[i].numpass==0) pass0++;num++;}}}else {rep(i,1,cnt) {if(Stu[i].ju==false) continue;allC=allC+Stu[i].Chi;allM=allM+Stu[i].Math;allE=allE+Stu[i].Eng;allP=allP+Stu[i].Pra;if(Stu[i].Chi>=60) numPC++;else numFC++;if(Stu[i].Math>=60) numPM++;else numFM++;if(Stu[i].Eng>=60) numPE++;else numFE++;if(Stu[i].Pra>=60) numPP++;else numFP++;if(Stu[i].numpass==4) pass4++;if(Stu[i].numpass==3) pass3++;if(Stu[i].numpass==2) pass2++;if(Stu[i].numpass==1) pass1++;if(Stu[i].numpass==0) pass0++;num++;}}if(num!=0) {aveC=allC/num;aveM=allM/num;aveE=allE/num;aveP=allP/num;}else aveC=aveM=aveE=aveP=0;printf("Chinese\n");if(aveC!=0) printf("Average Score: %.2lf\n",aveC);else printf("Average Score: -nan\n");printf("Number of passed students: %d\n",numPC);printf("Number of failed students: %d\n\n",numFC);printf("Mathematics\n");if(aveM!=0) printf("Average Score: %.2lf\n",aveM);else printf("Average Score: -nan\n");printf("Number of passed students: %d\n",numPM);printf("Number of failed students: %d\n\n",numFM);printf("English\n");if(aveE!=0) printf("Average Score: %.2lf\n",aveE);else printf("Average Score: -nan\n");printf("Number of passed students: %d\n",numPE);printf("Number of failed students: %d\n\n",numFE);printf("Programming\n");if(aveP!=0) printf("Average Score: %.2lf\n",aveP);else printf("Average Score: -nan\n");printf("Number of passed students: %d\n",numPP);printf("Number of failed students: %d\n\n",numFP);printf("Overall:\n");printf("Number of students who passed all subjects: %d\n",pass4);printf("Number of students who passed 3 or more subjects: %d\n",pass3+pass4);printf("Number of students who passed 2 or more subjects: %d\n",pass2+pass3+pass4);printf("Number of students who passed 1 or more subjects: %d\n",pass1+pass2+pass3+pass4);printf("Number of students who failed all subjects: %d\n\n",pass0);
}
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0);int idx;miue();while(scanf("%d",&idx)&&idx){int nape;if(idx==1) {while(1) {nape=choice_1();if(nape==0) break;}}if(idx==2) {while(1) {nape=choice_2();if(nape==0) break;}}if(idx==3) {while(1) {nape=choice_3();if(nape==0) break;}}if(idx==4) {choice_4();}if(idx==5) {choice_5();}miue();}return 0;
}

UVA - 12412 ​​​​​​​A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)相关推荐

  1. UVa 12412 - A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

    是道例题,编写个管理系统,类似于课本十二章的那个.自己写的代码运行样例正常,但提交WA.而且给了一半的代码,就又上网搜了例题原版代码.对比了输入与输出,一直没找到错,目测是有个地方格式错了或者精度控制 ...

  2. UVA - 12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

    题目来源:https://cn.vjudge.net/problem/UVA-12412//题目太长不想复制 题意: 写一个学生成绩管理系统 (SPMS). SID:10位数字 CID:不超过20的整 ...

  3. A Typical Homework (a.k.a Shi Xiong Bang Bang Mang) UVA - 12412

    题目链接:A Typical Homework (a.k.a Shi Xiong Bang Bang Mang) UVA - 12412 思路:自顶而上,先写出框架,再写具体函数. 框架: int m ...

  4. UVA12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

    这个问题,使得人们仿佛又回到了字符界面的时代. 问题链接:UVA12412 A Typical Homework (a.k.a Shi Xiong Bang Bang Mang). 题意简述:学生成绩 ...

  5. UVa12412 - A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

    wrong answer很奇怪.经过几天找测试例子,终于找到原因了.在计算Overall时,计数有问题,原来用的是位操作,值>1将pass1加1,>=3将pass2加1,这种计算方式不对. ...

  6. UVA12412 A Typical Homework (a.k.a 师兄帮帮忙) 题解

    题意 实现一个学生信息管理系统,完成要求功能,并按要求输出.具体内容可以看[UVA12412](UVA12412 A Typical Homework (a.k.a 师兄帮帮忙) - 洛谷 | 计算机 ...

  7. UVA12412 A Typical Homework (a.k.a 师兄帮帮忙)

    这是一道模拟题,不能提升算法能力,但是能大大提升编程能力,这道题主要就是编写五个函数,一个一个说, 首先是第一个添加函数,这个函数需要注意的是,学生id是不能重复的,也就是这个学生id已经出现过了那么 ...

  8. Uva12412 a.k.a Shi Xiong Bang Bang Mang

    这题综合性挺强的,刷题的时候debug改了两天.坑:每次query重新排序.求大佬轻喷. 原题: ac代码(还有很多地方能优化,能让代码变得更简短,不过我懒得去看了(- ̄▽ ̄)-) #include& ...

  9. A Typical Homework UVA - 12412 师兄帮帮忙

    题目链接 (题目背景略,有兴趣的读者请自行阅读原题) 编写一个成绩管理系统(SPMS).最多有100个学生,每个学生有如下属性. SID:学生编号,包含10位数字. CID:班级编号,为不超过20的正 ...

最新文章

  1. 【IT基础】常见的开发文档
  2. CSS实现 全屏 遮罩
  3. python基础一入门必备知识-python基础教程#菜鸟也能看懂的超简单入门必备知识...
  4. 电脑出现qtwebengineprocess.exe停止报警_FANUC报警号,不用再翻书本了。
  5. PointDSC: Robust Point Cloud Registration using Deep Spatial Consistency (PointDSC) 论文学习笔记小结
  6. MongoDB教程——第2天
  7. 在MOSS2007中使用网页获取部件
  8. Linux拨号上网后自动断开,Ubuntu 12.10 拨号上网及停用方法
  9. 线性代数-MIT 18.06-5(b)
  10. 3D 人体姿态估计简述【转】
  11. 全局修改样式(全局颜色更改)
  12. 短视频矩阵系统源码。抖音矩阵系统源码。抖音SEO源码。
  13. 极品工控插件 iocomp 中 iXYPlotX1配置全面解析
  14. 出现了,PPT 制作新方式
  15. Adobe Acrobat DC 设置保存上次浏览位置
  16. mtk tuning isp 调试流程
  17. 大数据之路之Linux篇
  18. 厨房净水器哪个牌子好,厨房净水器科普
  19. 技多不压身,语言越多越好?
  20. 上上卤剁椒拌饭瞄准外卖市场,易拉罐包装颜值高!

热门文章

  1. Python input 函数 -Python零基础入门教程
  2. jq之$(“p:first“)
  3. yiilite.php,YII Framework学习教程-YII的V-view的render若干函数-2011-11-17 | 学步园
  4. suse查看mysql内存使用情况_MySQL 慢查询日志(Slow Query Log)
  5. 主站系统服务器选择,配电网自动化主站系统的结构_功能及操作系统的选择.doc...
  6. mysql vim 命令_Vim基本命令必知必会
  7. 四川大学 设计专业 C语言必修,四川大学C语言2001年真题_跨考网
  8. zabbix proxy mysql_zabbix proxy 配置
  9. win10计算机优化技巧,让Win10系统运行更流畅的优化技巧
  10. apache log4j入门