2016-05-10 59 views
-3

所以我正在做一個C++應用程序來解決一些練習。我不能找出一個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--; 
} 

在某些情況下,我不需要唱或b variabels ......和應用doesent允許,如果當我按下回車我退出。例如:我必須輸入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--; 
} 

謝謝您的時間。

+0

我不會把cin放在IF語句中。嘗試把你的cin放在IF之上,然後測試它。 –

+0

是的,但是如何在輸入符號時才輸入符號? –

+1

請改善問題的標題。由於書面的未來訪問者可能有同樣的問題將無法找到它,因爲標題太模糊。 –

回答

2

你說:

在某些情況下,我不需要唱或b variabels ......和應用doesent允許,如果當我按下回車我退出。

這是因爲程序等待你輸入所需的所有值

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--; 
} 
+0

嗯,這個getline說它沒有定義.. –

+0

你已經陷入了一個已經糾正錯字。 – user4581301

相關問題