在 C++ 的 if 语句中使用多个条件

2024-04-02

我正在尝试在 C++ 中创建一个复杂的 if 语句,这将使我免于编写一大堆 if 语句,我想知道下面的代码是否确实有意义,或者我忽略了一个错误。

if(input==choice) {
        cout << "Tie!" << endl;
}else if(input=="rock" && choice=="scissors"
     || input=="scissors" && choice=="paper"
     || input="paper" && choice=="rock") {
        cout << input " beats " << choice << ", you win!" << endl;
}else if(input=="rock" && choice=="paper"
    || input=="scissors" && choice=="rock"
    || input=="paper" && choice=="scissors"){
        cout << choice << " beats " << input << ", you lose!" << endl;
}

我想要实现的是:

"if input is x AND choice is y, OR if...."

基本上,我正在测试多个“if-and”条件,以便在满足任何 if-and 条件时执行一行代码。输出抛出“不匹配‘operator||’”错误。


你有一个错字input="paper" && choice=="rock"),但我建议您修复代码,而不是修复拼写错误。难怪你在这个巨大的条件块中犯了一个拼写错误。你有很多重复和混合逻辑与输出。如果您在包含上花费了一些行,那么您可以在代码上节省一些...

#include <iostream>
#include <string>
#include <vector>
#include <utility>
#include <algorithm>

bool win(const std::string& input, const std::string& choice) {
    static const std::vector<std::pair<std::string, std::string>> wins = 
            { { "rock", "scissors" },
              { "scissors", "paper"  },
              { "paper", "rock" }
            };
    return std::find(wins.begin(), wins.end(), std::make_pair(input, choice))
        != wins.end();
}

int main() {
    std::string choice = "paper";
    std::string input = "scissors";
    if (win(choice, input)) { std::cout << "you win! \n"; }
    else                    { std::cout << "you lose! \n"; }
}

下一步,您应该消除所有这些字符串,例如通过使用评论中讨论的枚举。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 的 if 语句中使用多个条件 的相关文章

  • ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共构造函数吗?

    在我的两门课程中 看起来像这样 最少 using System using System Collections Generic using System Collections using System ComponentModel us
  • C++ 有像 Pascal 一样的“with”关键字吗?

    withPascal 中的关键字可用于快速访问记录的字段 有人知道 C 是否有类似的东西吗 前任 我有一个包含许多字段的指针 但我不想这样输入 if pointer gt field1 pointer gt field2 pointer g
  • 如何将 C++ 类包装在基于 C 的 dll 或基于 CLI 的 dll 中?

    我被告知将我用 C 编写的类导入到 dll 中 然后在 c 应用程序中使用该 dll 下列的本指南 https stackoverflow com questions 4555961 how to use a class in dll我创建
  • 此插件导致 Outlook 启动缓慢

    我正在使用 C NET 4 5 开发 Outlook Addin 项目 但部署后 有时 Outlook 会禁用我的插件 并显示此消息 这个插件导致 Outlook 启动缓慢 我不知道我的插件出了什么问题 这只有很少的代码 并且ThisAdd
  • C++:获取注册表值仅给出第一个字符[重复]

    这个问题在这里已经有答案了 我试图从注册表中获取字符串值 但我只得到第一个字母 HKEY hKey char gamePath MAX PATH if RegOpenKeyEx HKEY CURRENT USER L Software Bl
  • 使用 QSet 作为 Qt 地图容器中的键

    我需要一个映射 其中键是唯一的 并且每个键都是一组或自定义 POD 结构 其中包含 3 个数据项 这些值只是指向对象实例的指针 从阅读Qt 的 QMap 与 QHash 的文档 http qt project org doc qt 4 8
  • 禁用除滚动之外的 DataGridView

    我如何配置 datagridview 以便用户只能在行中移动并使用滚动 而没有其他 如果我禁用网格不允许我使用滚动 将您的 datagridview 设置为只读 这将禁用任何编辑 dataGridView1 ReadOnly true 在你
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • IClaimsTransformation 未触发

    我尝试过实施一个IClaimsTransformation我在 ASP NET CORE 3 1 Web 应用程序中找到的类 public class ClaimsTransformer IClaimsTransformation publ
  • ASP MVC 5 - 403 customError 不起作用

    我正在尝试为我的应用程序创建自定义错误页面 它在大部分情况下都有效 但不适用于403 errors 我的网络配置
  • 使用对象列表构建树

    我有一个带有属性 id 和parent id 的对象列表 我想建造一棵树来连接那些孩子和父母 1 个父对象可以有多个子对象 并且有一个对象将成为所有对象的祖先 实现该功能最快的算法是什么 我使用 C 作为编程语言 但其他语言也可以 像这样的
  • 在非指针变量和类成员上放置 new

    考虑以下示例 include
  • 使用 cudamalloc()。为什么是双指针?

    我目前正在浏览有关的教程示例http code google com p stanford cs193g sp2010 http code google com p stanford cs193g sp2010 学习CUDA 演示的代码 g
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • fscanf 和 EOF 中的否定扫描集

    我的文件中有一个以逗号分隔的字符串列表 姓名 1 姓名 2 姓名 3 我想跳过所有逗号来阅读这些名字 我写了以下循环 while true if fscanf file my string 1 break 然而 它总是比预期多执行一次 给定
  • 如何使用eclipse构建C++应用程序

    我已经从以下位置下载了 Eclipse Juno for C here http www eclipse org downloads download php file technology epp downloads release ju
  • printf 参数不足

    我的问题是关于缺少参数的 printf 之后的行为 printf s blah blah d int integer was given as argument and not int written 我已经知道 如果格式参数不足 则行为是
  • 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

    我有一个继承自基类模板的类模板 基类模板有一个数据成员和一个成员函数模板 我想从我的超类中调用它 我知道为了消除对成员函数模板的调用的歧义 我必须使用template关键字 我必须明确引用this在超级班里 this gt base mem
  • PHP - While/Else 错误? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有以下

随机推荐

  • Oracle 即时客户端:ORA-28759:无法打开文件

    我拥有 red hat 6 服务器 具有 TCPS 连接设置的远程 Oracle 数据库 从 rpm 安装的 oracle 即时客户端 basic odbc sqlplus 我正在尝试设置 Oracle 即时客户端来连接到远程数据库 输入命
  • Django REST 框架中的 405“不允许方法 POST”

    我正在使用 Django REST 框架来实现 Get Post api 方法 并且 GET 可以正常工作 但是 当发送 post 请求时 会显示下面的 405 错误 我在这里缺少什么 405 Method Not Allowed deta
  • 如何在使用 oauthlib.oauth2 fetch_token 时捕获 API 失败

    Python3fetch token该库中的方法在使用响应之前不会检查响应状态 如果它进行的 API 调用失败 则响应将无效并且脚本崩溃 我是否可以设置一些内容 以便在库读取响应之前在不成功的响应上引发异常 import requests
  • 如何永久移动闭包

    我正在设计一个为我运行闭包的小结构 我可以将它们设置为停止 pub fn run self f Box
  • MySQL 事件调度的性能影响

    我有一个在 MySQL 数据库上创建临时用户 然后在 24 小时后删除它们的用例 我会做足够多的事情 我想自动化该过程并将其与用户创建脚本打包在一起 这样我就不必跟踪该过程 我在互联网上查找了有关 MySQL 事件调度的性能影响的文档 问题
  • 为什么这些模板不明确?

    这本书C 模板 完整指南 https rads stackoverflow com amzn click com 0201734842第 275 页有一个例子 我无法理解它 引用书中的摘录 template
  • 尝试以角度查找加载符号

    我试图在网页的页面源 它使用角度 中找到所有加载符号 旋转器 我目前正在尝试 快速 检测页面是否正在加载 到目前为止我所要做的是寻找spinner border ml 3 md spinner 我还能搜索什么 public static b
  • AppBar折叠/展开时如何保持工具栏固定在顶部?

    Overview 我正在尝试实施其中之一滚动技巧 https www google co in design spec patterns scrolling techniques html scrolling techniques scro
  • 如何使用这样的闭包参数初始化结构体?

    In 这个问题 https stackoverflow com questions 70039118 uncertain of this swift struct syntax with closure 70039340 noredirec
  • Javascript 将毫秒显示为天:小时:分钟,没有秒

    我正在计算两个日期之间的差异 其中有许多不同的示例可用 返回的时间以毫秒为单位 因此我需要将其转换为更有用的东西 大多数示例都是天 小时 分钟 秒或小时 分钟 但我需要天 小时 分钟因此秒应四舍五入为分钟 我当前使用的方法很接近 但显示 3
  • 如何将自定义构建的 jar 文件注册为 Maven 主要工件?

    我有一个项目预计会提供一个 jar 文件
  • Android 使用 Intent 获取 url

    我正在尝试获取单击以打开应用程序的 URL 我只是找不到从哪里可以获得这些信息 我有一个清单 单击时会打开应用程序 链接将是 我试图将其交给应用程序来处理
  • 如何在请求进行 Ajax 时显示加载 gif

    我试图在 ajax post 请求发送时显示加载 gif 图像 实际上我的代码是通过画布捕获图像 并且该图像呈现并转到 php 页面进行保存 该 php 文件保存并返回图像 现在我需要在请求发布时显示加载图像 并在 ajax 请求完成时隐藏
  • 正则表达式替换R中的所有上标

    尽管有很多关于 R 中的正则表达式的示例和问题 但它们似乎都不适合我的问题 在我的项目中 我正在努力处理像 4x1 1x1 这样的字符串 上标字符对我来说似乎很有问题 我的目标 从4x1 1x1 我想要得到4x1 1x1 只需将所有上标替换
  • 设置了正确的内容类型,但 .ipa 文件被视为 .zip 文件

    我编写了一个小型 Rails 应用程序 我可以在其中上传三个文件 我需要这些文件来无线分发临时构建 这包括一个 ipa文件 一个 mobileprovisioning文件和一个 plist File 现在的问题是 当我点击链接时 ipa归档
  • 是否可以在 Netbeans 7.0 应用程序中使用 Jzy3D?

    好吧 我们正在尝试将 3D 散点图合并到 Netbeans 7 0 中的项目中 我们选择测试的库之一是 Jzy3D 看起来它会做我们需要它做的一切 但不幸的是 它什么也没做 我已经正确安装了 JOGL 并对其进行了测试 发现它可以正常工作
  • 阻止 FlowType 检查 node_modules 中的错误

    我曾尝试寻找解决方案或解决此问题的方法 但没有成功 以下是描述我的流程安装以及最终我面临的问题的一些步骤 Step 1 我使用创建了一个新的反应本机项目react native init TestProject 我想配置flow http
  • 在 dotnet 新模板中包含“隐藏”文件

    我正在尝试创建一个简单的dotnet new包含我的团队使用的 默认 editorconfig 和 gitconfig 的模板 不幸的是 files 不会被包含在dotnet pack 这是我的 csproj 的一部分
  • SonataAdminBundle表单字段查询

    在 Admin 类的 SonataAdminBundle 中 我无法创建ManyToMany 字段上的 orderBy https github com sonata project SonataAdminBundle issues 328
  • 在 C++ 的 if 语句中使用多个条件

    我正在尝试在 C 中创建一个复杂的 if 语句 这将使我免于编写一大堆 if 语句 我想知道下面的代码是否确实有意义 或者我忽略了一个错误 if input choice cout lt lt Tie lt lt endl else if