编程题#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:分配病房的主要内容,如果未能解决你的问题,请参考以下文章

第2题——DNA片段

关于如何使看门狗程序意识到并处理其中一个病房的退出代码的设计理念

毕业设计 - 题目:基于 stm32 的病房呼叫系统

多线程编程

C语言编程题 求代码

头条18年校招后端开发工程师编程题解析