PAT没有好好读题,把这题做麻烦了,这个思路有两个测试点没有通过,因为把数据的含义弄错了呗,肯定不能全对啊,但是用错误的数据能通过这么多测试点,也是让我很吃惊。

虽然题做错了,但是想出并实现了一个有用的思路:

读取已知行数但未知每行数字个数的思路及实现

读取一个字符,如果是回车或者空格,就吞掉,并且进行该有的操作

如果是数据的一部分,就吐出来放回缓冲区,用cin正常读取

以下为主要思路代码,注意cin.putback()的巧妙使用

     while (c = getchar())      //先让c把这个字符吃掉{if (c == ' ');         //如果是空格,就真的吃掉了else if (c == '\n')        //如果是回车,就把总数存起来,然后把总数归零,准备读取下一行{room[i].days = curDay;curDay = 0;i++;break;}else                   //如果不是空格也不是回车,说明是有用数据,把这个数据放回缓冲区,然后用cin读取这个数据,(cin默认把空格或者回车作为数据结束的标志){cin.putback(c);cin >> room[i].power[curDay];curDay++;}}

全部代码

#include<iostream>
using namespace std;
class Room
{public:double power[1000] = { 0 };double days = 0;int freeDays=0;bool mayFreeRoom = false;bool freeRoom = false;
};
int main()
{double totalRoom;double minPower;double minDay;cin >> totalRoom >> minPower >> minDay;Room room[1000];int i;int curDay = 0;char c;getchar();//吸收回车//输入一行未知数字个数,但是以\n结尾的数据for (i = 0; i < totalRoom;){while (c = getchar()){if (c == ' ');else if (c == '\n'){room[i].days = curDay;curDay = 0;i++;break;}else{cin.putback(c);cin >> room[i].power[curDay];curDay++;}}}//判断int j;bool mayFree[1000] = { false };for (i = 0; i < totalRoom; i++){for (j = 1; j < room[i].days; j++){if (room[i].power[j] < minPower){room[i].freeDays++;}}if (room[i].freeDays*2 >= room[i].days)//可能空闲{if (room[i].freeDays > minDay)//空闲{room[i].freeRoom = true;}else room[i].mayFreeRoom = true;}}//计算double totalMayFree=0;double totalFree=0;for (i = 0; i < totalRoom; i++){if (room[i].mayFreeRoom == true){totalMayFree++;}if (room[i].freeRoom == true){totalFree++;}}printf("%.1f%% %.1f%%", 100*totalMayFree / totalRoom, 100*totalFree / totalRoom);cout << endl;system("pause");
}

C++ cin.putback()输入【已知行数】但【未知每行数字个数】的思路相关推荐

  1. 题目:输入一个8bit数,输出其中1的个数。如果只能使用1bit全加 器,最少需要几个?

    题目:输入一个8bit数,输出其中1的个数.如果只能使用1bit全加器,最少需要几个? 7个1bit全加器 module number_one(input clk,input rst_n,input ...

  2. 题目:输入一个8bit数,输出其中1的个数,只能使用1bit全加器

    一.思路 全加器(full_adder):是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器,一位全加器可以处理低位进位,并输出本位加法进位.多个一位全加器进行级联可以得到多位全加器. ...

  3. 输入一个8bit数,输出其中1的个数。如果只能使用1bit全加器,最少需要几个,请使用verilog进行描述?(附verilog代码)

    回答:7个. 解释:全加器是full_adder,实现两个二进制相加求和的过程.其中,Ai是被加数,Bi是加数,相邻低位来的进位数是Ci-1,输出本位和是Si,向相邻高位进位数是Ci. 图1:全加器的 ...

  4. C语言用指针法输入12个整数,然后按每行4个数输出(刷题)

    Sometimes slightly lower the head, perhaps our way of life will be more wonderful, our ability will ...

  5. C语言:用指针法输入12个整数,然后按每行4个数输出

    C语言:用指针法输入12个整数,然后按每行4个数输出 用指针法输入12个整数,然后按每行4个数输出 输入 输入包含一行,有12个整数. 输出 按顺序,每行输出4个整数. ####测试说明 样例输入: ...

  6. PAT1054 求平均值 (20 分)【从非法输入字符串中获取合法输入 cin.putback()】

    吐槽 题目描述的太不清晰了吧,自己写了一些测试用例,从已知中并不能看出这些输入是否合法- 我的测试用例 21 007 000.01 12. .9 -007 -000.01 -12. -.9 .9. - ...

  7. EditText限制输入的字符数并弹出Toast提示字数已达上限

    大家对EditText这个控件并不陌生,它是一个可供我们输入文本内容的输入框.前些日子需要实现这样一个需求:限制EditText中可以输入的最大字符数为6,达到6时,用户每按一次软键盘就弹出一个Toa ...

  8. 输入一个十进制数,转化为二进制

    1.代码如下: // test.cpp : Defines the entry point for the console application. // /* 输入一个十进制数,转化为二进制.*/ ...

  9. cin指定输入截止符

    C++ cin用法 cin指定输入截止符 例如有时间格式12:00:13,要求提取小时,分钟和秒数. 输入 12:00:13 输出 12 00 13 /* *输入回车后,还需要手动输入EOF,即输入截 ...

最新文章

  1. 2019河南对口高职高专计算机,2019年河南普通高招最后一个批次 高职高专批正式投档...
  2. android服务的原理,Android学习笔记:IntentService
  3. VS 2010 和 .NET 4.0 系列之《WPF 4》篇
  4. Python学习笔记011_模块_标准库_第三方库的安装
  5. 微软 python教程_最强福利——来自微软的Python学习教程(开发指南)
  6. ubuntu查看pip安装的软件路径
  7. asp 基础操作之增删改查
  8. 服务器硬盘和台式机有什么区别,服务器和电脑主机有什么区别?
  9. Sock学习1 (网络基本知识、Sock简介)
  10. 23位子网掩码是多少_子网掩码23位的是多少
  11. 活性染料(反应染料)
  12. 带宽、线速、吞吐量概念
  13. 《个人金融信息保护技术规范》JRT 0171-2020专家解读(转自中国存储网)
  14. 一步步自定义视频播放器——TextureView+MediaPlayer自定义视频播放器
  15. -eq、-ne、-gt、-ge、-lt、-le英文意思
  16. python barrier_Python中的Barrier对象
  17. [Java反序列化]CommonsCollections3利用链学习
  18. 函数式编程实例WordCount(林子雨老师慕课代码) 由于文件引入的问题之前报过Exception in thread “main“ java.lang.NullPointerExcept(已解决)
  19. 起名如何计算五行与笔划
  20. shell脚本练习2023年下岗版

热门文章

  1. rss C语言,Android内存:VSS/RSS/PSS/USS介绍
  2. mysql免安装数据库用法_MySQL数据库之mysql免安装制作使用说明
  3. datagrid出现相同两组数据_多数据库联用挖掘肝细胞癌症的血管侵犯特征基因
  4. 二分查找(c语言实现)
  5. masm中常用的伪指令
  6. 关于寻路算法的一些思考(3):A*算法的实现
  7. selenium的使用教程2
  8. Netty学习笔记(三)EventLoopGroup开篇
  9. “新型肺炎患者同乘查询系统”上线,超2千万用户使用
  10. (RabbitMQ) Java Client API Guide