C++通过回车结束循环输入

news2024/9/28 1:14:09

试想一个案例,假设需要你输入n行数字,而每一行输入的数字数量都未知(不定),如何通过C++来实现这一操作?


本贴笔者给出一个具体案例:首先规定输入的行数,而后在每一行输入不定量的数字,最后将每一个数字对应的值,以及与其匹配的行数输出

例如,输入:

2

1 2 3 4 5 

 6 7

则输出:

1,1

1,2

1,3

1,4

1,5

2,6

2,7

 具体的思想是:定义一个二值对类型,再用一个该类型的vector实现无限存储数据的功能。

定义结构体

struct goal{
	int num;
	int name;
};

定义初始变量

	vector<goal> T;
	//目标数组 
	int num=0;
	cin>>num;

while循环通过回车结束输入!

ignore函数可以清楚cin输入字符后的'\n',在这里使用主要用来实现合法换行的过渡。具体解释见代码注释~

cin.ignore();
	//由于输入的行数是第一个输入
	//在终端会多执行一次回测
	//所以要用额外的ignore函数处理一次! 
	for(int i=1;i<=num;i++)
	{
		cout<<"这是第"<<i<<"行的输入:"<<endl;
		char c; 
		cin.get(c);
		//获取第一个输入 
		while(c!='\n'){
			cin.ignore(); 
			//通过ignore函数清空上一次的回车符缓存!
			//否则会直接跳出循环 
			goal temp;
			temp.name=c-48;
			temp.num=i;
			T.push_back(temp);
			cin.get(c);
			//获取下一次的输入 
		}
	}

迭代器检验输入结果

	for(vector<goal>::iterator it=T.begin();it!=T.end();it++)
		cout<<(*it).num<<" "<<(*it).name<<endl;

全代码如下:

#include <iostream>
#include <vector>
using namespace std;

struct goal{
	int num;
	int name;
};

int main(int argc, char** argv) {

	vector<goal> T;
	//目标数组 
	int num=0;
	cin>>num;
	
	cin.ignore();
	//由于输入的行数是第一个输入
	//在终端会多执行一次回测
	//所以要用额外的ignore函数处理一次! 
	for(int i=1;i<=num;i++)
	{
		cout<<"这是第"<<i<<"行的输入:"<<endl;
		char c; 
		cin.get(c);
		//获取第一个输入 
		while(c!='\n'){
			cin.ignore(); 
			//通过ignore函数清空上一次的回车符缓存!
			//否则会直接跳出循环 
			goal temp;
			temp.name=c-48;
			temp.num=i;
			T.push_back(temp);
			cin.get(c);
			//获取下一次的输入 
		}
	}
	for(vector<goal>::iterator it=T.begin();it!=T.end();it++)
		cout<<(*it).num<<" "<<(*it).name<<endl;
	
	return 0;
}

输入测试用例:13197371 7166

 

结果与预期一致! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scratch 足球打蛤蟆

Scratch 足球打蛤蟆 本程序转换为HTML后运行。“足球”角色和角色“麦克斯”跟随鼠标&#xff0c;点击鼠标时“足球”角色复制并向鼠标方向开始移动&#xff0c;碰到边缘反弹&#xff0c;移动一定步数后删除。“蛤蟆”角色每0.5秒在随机位置和方向生成&#xff0c;碰到足球角色…

精彩回顾 | 模型与数据驱动工业数智化——Modelica暨装备数字化研讨会(2023)圆满召开

2023年6月30日&#xff0c;以“模型与数据驱动工业数智化”为主题的Modelica暨装备数字化研讨会&#xff08;2023&#xff09;在江苏省苏州市隆重召开。会议由苏州同元软控信息技术有限公司&#xff08;简称“同元软控”&#xff09;与哈尔滨工业大学计算学部等单位联合主办&am…

信息文档管理与配置管理

目录 ​编辑 一、软件文档的分类 1.1 开发文档 1.2 产品文档 1.3 管理文档 二、文档质量等级划分 2.1 1级文档 2.2 内部文档(2级) 2.3 工作文档&#xff08;3级&#xff09; 2.4 正式文档&#xff08;4级&#xff09; 三、配置管理 3.1 配置管理的定义 3.2 配置管理的6个主要…

F5是什么意思?聊聊你所不知道的F5

5月底&#xff0c;有幸参加了F5 Forum 科技趋势峰会&#xff0c;这让我不仅关注数字化企业和应用服务的技术趋势&#xff0c;也对华丽转型后的F5有了更深入的了解。如果你对F5是什么意思尚且存在疑问&#xff0c;那这篇文章我们就聊聊我眼中的F5&#xff0c;这个应用及API交付和…

编程(44)----------MySQL索引存储

MySQL的索引存储使用的并非像其展示出的那样以类似表格的方式. 而是以B数的方式存储. 在此之前先了解一下作为前身的B树 首先明确, 无论如何数据库中的存储方式都是树型. 而B树其实就是多叉树. 其结构大概如图所示. 假设根节点中存储了key1为5 33 这两个数据. 那其子节点就以这…

CYCLO(GLY-L-PHE),10125-07-2,环(甘氨酰-L-苯丙氨酰),具有生物活性的光学异构体

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ cyclo(Gly-Phe)&#xff0c;CYCLO(-GLY-PHE)&#xff0c;CYCLO(GLY-L-PHE)&#xff0c;Cyclo(-Gly-L-Phe)≥ 95% (HPLC) 环(甘氨酰-L-苯丙氨酰)Product structure&#xff1a; Product specifications&#xff1a; 1.CAS N…

软件测试工程师必备的SQL语句基础

文末有惊喜 为一个软件测试工程师&#xff0c;我们在测试过程中往往需要对数据库数据进行操作&#xff0c;但是我们的操作大多以查询居多&#xff0c;有时会涉及到新增&#xff0c;修改&#xff0c;删除等操作&#xff0c;所以我们其实并不需要对数据库的操作有特别深入的了解&…

vscode使用Eslint+Prettier格式化代码

1、安装Eslint插件和Prettier插件 2、 安装eslint npm install eslint -g1&#xff09;、初始化项目 npm init -y 2&#xff09;、生成eslint配置文件 npx eslint --init 完之后生成一个.eslintrc.json的文件 二、vscode配置 1、vscode需要配置保存自动化格式 设置 ->…

QWebEngine应用---基于QWebChannel实现网页与qt层交互

Qt提供了QWebChannel实现和网页的通信&#xff0c;我们直接拿github上一个能直接运行的demo来做说明&#xff0c;demo是基于Widget&#xff0c;且页面是自己实现的页面&#xff0c;接着会介绍基于QML实现且页面是第三方网站如何使用的。 QWebChannel用法 我们先看看demo的运行…

RocketMQ5.0消息消费<二> _ 消息队列负载均衡机制

RocketMQ5.0消息消费&#xff1c;二&#xff1e; _ 消息队列负载均衡机制 一、消费队列负载均衡概览 RocketMQ默认一个主题下有4个消费队列&#xff0c;集群模式下同一消费组内要求每个消费队列在同一时刻只能被一个消费者消费。那么集群模式下多个消费者是如何负载主题的多个…

第四十四章Java访问对象的属性和行为以及销毁

Java访问对象的属性和行为 每个对象都有自己的属性和行为&#xff0c;这些属性和行为在类中体现为成员变量和成员方法&#xff0c;其中成员变量对应对象的属性&#xff0c;成员方法对应对象的行为。 在Java中&#xff0c;要引用对象的属性和行为&#xff0c;需要使用点…

【MySQL 】MySQL 创建数据库, MySQL 删除数据库,MySQL 选择数据库

作者简介&#xff1a; 辭七七&#xff0c;目前大一&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

iPhone苹果手机桌面上快速记录笔记的步骤

现在越来越多的人喜欢上记笔记&#xff0c;因为记笔记是一种提升效率和组织思维的重要方式。随着移动设备的普及&#xff0c;手机逐渐成为我们生活中不可或缺的工具之一。在手机上记笔记就成为一种很快捷的记录方式&#xff0c;可以让我们随时随地记录灵感和重要信息。在众多记…

计算机体系结构基础知识介绍之动态调度Tomasulo 算法(二)

Tomasulo方法是一种计算机硬件架构的算法&#xff0c;用于动态调度指令的执行&#xff0c;允许乱序执行以及更有效率的使用多个执行单元。它由IBM公司在1967年提出&#xff0c;首次应用是在IBM System/360 Model 91的浮点单元上。Tomasulo方法的主要创新包括在硬件中进行寄存器…

轻松学习阿里云原生内存数据库Tair

&#x1f4d6;轻松学习阿里云原生内存数据库Tair &#x1f680;前言☁️什么是Redis&#xff1f;☁️什么是云原生内存数据库&#xff1f;✨特点 &#x1f680;阿里云原生内存数据库Tair&#x1f47b;简介✨功能特性&#x1f5fa;️应用场景 ✍️上手案例&#x1f3af; 基于Red…

PCB笔记(PCB设计流程)

双层PCB设计流程&#xff08;以AD10为例&#xff09; 1. Preferences常规设置2. 画好原理图后3.编译工程&#xff0c;看是否有错4.然后执行更新到PCB5. 布线前常规规则设置6. 布局之后开始布线7.布线结束之后&#xff0c;开始铺铜8. 创建铜皮之前调丝印&#xff0c;将所有丝印调…

力扣 -- 剑指 Offer II 091. 粉刷房子

题目链接&#xff1a;剑指 Offer II 091. 粉刷房子 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码&#xff1a; class Solution { public:int minCost(vector…

MIT 6.S081 教材第八章内容 -- ext3 -- 05

MIT 6.S081 教材第八章内容 -- ext3 -- 05 引言为什么需要日志系统XV6 File system logging回顾ext3 file system log formatext3如何提升性能ext3文件系统调用格式ext3 transaction commit步骤ext3 file system恢复过程为什么新transaction需要等前一个transaction中系统调用执…

FFMPEG 编译流程(极客版)

前言 依葫芦画瓢 全程30分钟从零完成ffmpeg编译&#xff0c;主打的就是一个极客 编译环境 OS 要求&#xff1a;Ubuntu 20.04 LTS VMware新建虚拟机 NDK 要求&#xff1a;android-ndk-r20b FFmpeg 功能模块&#xff1a; libavformat:多媒体文件或协议的封装和解封装库&a…

DynaSLAM代码详解(5) — Tracking.cc跟踪线程

目录 5.1 DynaSLAM中Tracking线程简介 5 .2 RGBD模式下跟踪流程 5.3 DynaSLAM的低成本跟踪 (1) Tracking::LightTrack() 低成本跟踪函数 (2) Tracking::LightTrackWithMotionModel() 低成本的恒速模型跟踪流程 5.4 DynaSLAM的正常跟踪 文章着重将与ORB-SLAM2不同的地方&a…