【问题标题】:can you use cin twice?你能用两次cin吗?
【发布时间】:2020-06-13 14:32:47
【问题描述】:

我正在尝试做一个计算器类型的东西来练习函数(我是初学者)并让用户使用,加法,减法,乘法。或除法,用户必须选择一种模式,这是可变模式的工作,所以我使用了 cin 以便用户可以输入一个数字。但是一旦用户选择了模式,那么用户将需要输入值,但要做到这一点,我需要再次使用 cin,但用户输入值的屏幕不会出现。我应该怎么办? (这里不完整)

#include <iostream>
using namespace std;

double mode4 (double x, double y){
    double sum;
    sum = x + y;
    cout << "sum is: " << sum <<endl;
    return 0;
}

int main() {
   int *mode = new int;

cin >> *mode;
if (*mode > 4 || *mode == 0){
  *mode = 4; 
}

if (*mode == 4){
   double num1;
   double num2; 
   cin >> num1 >> num2;
    mode4(num1, num2);
    delete mode;
}

cout << *mode << endl;
    return 0;
}

【问题讨论】:

  • 你能不能指定你为 *mode 提供的输入?此外,屏幕截图会有所帮助。
  • 我尝试运行代码并按预期工作,如果输入模式为 0,输入屏幕不会消失,因为它必须再输入两个输入 num1 和 num2,一旦你输入这两个值它会找到数字的总和,输入屏幕会消失。
  • 你能解释一下,你期望什么行为。对于下一个 cin,您不会得到不同的屏幕,您必须在同一屏幕上输入。
  • 能否请您指定您在哪个操作系统上使用的 IDE,或者您是否从命令行工作? @DeepakPatankar 的回答准确地显示了您的程序在 linux 命令行下的行为方式,但如果您使用的是 IDE,您为程序输入输入的区域可能看起来不同。

标签: c++


【解决方案1】:

您必须在同一个屏幕中输入 num1 和 num2 的值,cin 不会在每次调用时都生成一个新屏幕。 这就是你的计算器屏幕的样子:

0
2 3
sum is: 5
4

如果您想在新屏幕中进行下一个输入,则可以使用answer

【讨论】:

  • 努力回答,但请不要发布文本图片,而是发布以 4 个空格缩进的文本本身,使其格式为固定宽度。为什么?什么需要大约 70 个字节来存储为文本,需要 53,587 个字节作为您的图像 - 它加起来......
  • 嘿@DavidC.Rankin,你的观点是有效的我已经更新了我的答案,感谢您的反馈!
【解决方案2】:

不是你问题的答案,但我不得不提一下

int *mode = new int;

cin >> *mode;
if (*mode > 4 || *mode == 0){
    *mode = 4; 
}

不要无缘无故地使用指针,这样更简单、更安全、更高效、更少打字等等。

int mode;

cin >> mode;
if (mode > 4 || mode == 0){
    mode = 4; 
}

等等

如果您需要一个整数变量,只需声明一个。无需使用整数指针并分配整数。

【讨论】:

  • 你是对的,但把它当作评论,而不是答案。因为它不是答案,将被删除。
猜你喜欢
  • 2023-01-01
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
相关资源
最近更新 更多