编程题#1:分配病房
Posted 平行线不会相交
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程题#1:分配病房相关的知识,希望对你有一定的参考价值。
描述
某个科室的病房分为重症和普通,只有当病人的疾病严重程度超过了入住重症病房的最低严重值,才可以安排入住重症病房。
现在要求设计一个程序,给病人安排好病房。疾病的严重程度用0到10来表示,0表示小毛病,10表示非常严重。
输入
第一行输入病人的个数m(m < 50),以及安排住入重症病房的最低严重值a
紧接着m行,每行表示病人编号(三个位,用0补齐)及其疾病的严重程度(浮点数,1位小数)。
每个病人的疾病严重程度都不一样。
输出
要求按照病人的严重程度输出住在重症病房里的病人的编号
注意:
如果当前所有病人的严重程度并不满足住在重症病房里,则输出“None.”(不包括引号)
#include <iostream> #include <iomanip> using namespace std; int f(double *cd, int m, double a) { int i; for (i = 0; i < m; i++) { if (*(cd+i) >= a) return i; } if (i == m) return m; } int main() { int m; double a; int id[1000]; double cd[1000]; cin >> m >> a; for (int i = 0; i < m; i++) { cin >> id[i] >> cd[i]; } // 排序 for (int i = 0; i < m - 1; i++) for (int j = 0; j < m - i - 1; j++) { if (cd[j+1] < cd[j]) { int temid = id[j]; id[j] = id[j+1]; id[j+1] = temid; double temcd = cd[j]; cd[j] = cd[j+1]; cd[j+1] = temcd; } } int q = f(cd,m,a); if (q == m) cout << "None." << endl; for (int i = m - 1;i >= q;i--) { cout << setfill(‘0‘) << setw(3) << id[i] << ‘ ‘ << fixed << setprecision(1) << cd[i] << endl; } return 0; }
以上是关于编程题#1:分配病房的主要内容,如果未能解决你的问题,请参考以下文章