我无法在c ++应用程序上找到它

时间:2016-05-10 22:29:42

标签: c++ onkeypress

所以我正在制作一个c ++应用程序来解决一些练习。

int i=1;
cout << "How many times :";
cin >> n;
while (n>0)
{
    cout << "Input F" << i << ":";
    if (cin >> a[i] && cin >> sign&& cin>>b)
    {
                switch (sign)
                {
                case'$': a[i] = a[i] * (sqrt(b));
                    break;
                case'^': a[i] = pow(a[i], b);
                    break;
                case'/':a[i] = a[i] / b;
                    break;
                default: cout << "\n Wrong sign";
                    break;
                }
    }
    else
        a[i]=a[i];
i++;
n--;
}

在某些情况下,我不需要sing或b变量...并且应用程序doesent允许我退出if当我按Enter键。

例如:我必须输入F1:8sqrt(2)并输入8 $ 2然后输入F2:只有8然后按Enter键,但应用程序一直在询问值。

好的,现在让它工作我需要连续两次输入标志......

while (n>0)
{
    cout << "Input F" << i << ":";
    cin >> a[i];
    if (cin.get() == '\n')
        a[i] = a[i];
    else {
        cin >> sign;
        if (sign)
            cin >> b;
        switch (sign)
        {
        case'$':
            a[i] = a[i] * (sqrt(b));
            break;
        case'^': a[i] = pow(a[i], b);
            break;
        case'/':a[i] = a[i] / b;
            break;
        default: cout << "\n Wrong sing;
            break;
        }
    }
i++;
n--;
}

感谢您的时间。

1 个答案:

答案 0 :(得分:2)

你说:

  

在某些情况下,我不需要sing或b变量...并且应用程序doesent允许我退出if当我按Enter键。

那是因为程序正在等待您输入

所需的所有值
if (cin >> a[i] && cin >> sign&& cin>>b)

您可以输入所有必要的输入或输入EOF(输入EOF是特定于平台的)来退出该声明。

通过逐行读取输入并使用std::istringstream独立处理每一行,您会更好。

while (n>0)
{
   std::string line;
   cout << "Input F" << i << ":";
   if ( ! getline(cin, line) )
   {
      // Error reading the next line.
      break;
   }

   // Now extract the data from the line using a istringstream.
   std::istringstream str(line);
   if (str >> a[i] && str >> sign && str >> b)
   {
      switch (sign)
      {
         case'$': a[i] = a[i] * (sqrt(b));
                  break;
         case'^': a[i] = pow(a[i], b);
                  break;
         case'/': a[i] = a[i] / b;
                  break;
         default: cout << "\n Wrong sign";
                  break;
       }
    }
    else
       a[i]=a[i];
    i++;
    n--;
}