2016-05-19 14 views
-1

2日前にC++を習得しました。私は今、基本的な構文を学んでいます。私は声明があれば学び、私はそれらを練習しようとしていました。私の問題は、 "if(temp> = 60 & & temp < = 70)"と "if(temp> = 75)"コードの部分でエラーが発生しました。私はこれを見てみました。同様の問題を抱えている人は、単に私が追随できないコードを使用しています。私は彼らのソリューションを実装しようとしましたが、さらに多くのエラーメッセージが出ます。もし誰かが助けてくれたら、私はそれを感謝します。事前に感謝します。コードはここにあります。その厄介な場合は申し訳ありません:演算子のエラーに一致しません

if(temp >= 75) 

tempはタイプstd::stringおよび75であるint値と考えられている:あなたのコード内で

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

int main() 
{ 
    //Get seed color 
    string seedColor = ""; 
    cout << "Enter seed color (Red or Blue): \n"; 
    cin >> seedColor; 
    //Get Temperature 
    string temp = ""; 
    cout << "Enter the temperature (F): \n"; 
    cin >> temp; 
    //Get soil moisture 
    string soilMoisture = ""; 
    cout <<"Enter the soil moisture (wet or dry): \n"; 
    cin >> soilMoisture; 
    //if red seed 
    if(seedColor == "red") 
    { 
     //if temp is >= 75 
     if(temp >= 75) 
     { 
      //if soil is wet 
      if(soilMoisture == "wet") 
      { 
       //get sunflower 
       cout << "A sunflower grew!"; 
      } 

      //if soil is dry 
      else 
      { 
       //get dandelion 
       cout << "A dandelion grew!"; 
      } 
     } 
     else 
     { 
     //otherwise 

      //get mushroom 
      cout << "A mushroom grew!"; 
     } 
    } 
    //if blue seed 
    if(seedColor == "blue") 
    { 
     //if temp is between 60 and 70 
     if(temp >= 60 && temp <= 70) 

     { 
      //if soil is wet 
     if(soilMoisture == "wet") 
     { 
      //get dandelion 
      cout << "You grew a dandelion!"; 
     } 
     else 
     { 
      //if soil is dry 
      cout << "You grew a sunflower!"; 
       //get sunflower 
     } 
     } 
     else 
     { 
     //Otherwise 
      cout<< "You grew a mushroom!"; 
      //Mushroom 
     } 

}}

+0

表示されている実際のエラーを投稿できますか? – owacoder

+2

'std :: string'と' int'を比較することはできません。 'temp'を数値型に変換する必要があります。 – Biffen

+1

私はtempをintにするつもりだと思っていますが、代わりに文字列にしました。 – NathanOliver

答えて

2

この行は、エラーが発生します。コンパイラは正しく、組み込み演算子はありません

bool operator>=(const std::string&,int); 

宣言されています。


おそらく、また、あなたはいくつかの小さな書式設定の問題を抱えていた

int temp = 0; 

または

double temp = 0.0; 

temp変数のあなたの定義を変更したいです。 fixed codeを参照してください。

+0

浮動小数点データ型を使用することを提案する場合は、浮動小数点数学が壊れていることも認識させる必要があります(http://stackoverflow.com/questions/588004/is-floating-point-math-broken ) – NathanOliver

1

あなたはintに変換し、どこかにこの値を格納するstd::stoi(temp)を使用し、その後intとしてtempを続ける場合は、暗黙のうちに、intstd::stringを比較することはできません。または、他の答えが示すようにdoubleに変更する場合は、std::stod(temp)を使用して浮動小数点数に変換します。例:

std::string temp_str = ""; 
std::cin >> temp_str; 
int temp = std::stoi(temp_str); 
// then do comparions/arithmetic with temp 
関連する問題