/*This program
1. requires user to enter their weight and planet name
2.use enum
3. display error message if listed planet name isn't entered
*/
/*Weight Factors on Each Planet
Mercury = 0.4155
Venus = 0.8975
Earth = 1
Moon = 0.166
Mars = 0.3507
Jupiter = 2.5374
Saturn = 1.0677
Uranus = 0
Neptune = 1.1794
Pluto = 0.0899
*/
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
enum Planets{MERCURY, VENUS, EARTH, MOON , MARS, JUPITER, SATURN,URANUS, NEPTUNE, PLUTO};
//string array that declares same 10 planets
string planet[] = {"MERCURY", "VENUS", "EARTH", "MOON", "MARS", "JUPITER", "SATURN", "URANUS", "NEPTUNE", "PLUTO"};
//Function Gets the User's Weight
double getweight()
{
double usrweight;
cout<<"\n What is Your Weight on a Different Planet?";
cout << "\n Enter Weight(lbs) Here: ";
cin >> usrweight;
return usrweight;
}
//String Function
string planetlength(string s)
{
for(int i = 0; i < s.size(); i++)
{
s[i] = planetlength(s[i]);
}
return s;
/*1. argument variable 's' of type string is passed to function
2. size() function checks the length of 's'
*/
}
//Verifies User selection is valid planet
int go2planet(string s)
{
int found = -1;
for(int i = 0; i < 10; i++) //cycle thru 10 planet names
{
if (s == planet[i]) //if s matches one of the 10 planet names in the array, return planet name as value
found = i;
}
return found;
}
//Function Selects Planet & Does Arithmetic
int main()
{
int journey;
int i;
cout<<"\n Take a trip to...";
for (i = 0; i < 10; i++)
{
cout<<"-------Planet #--------"<< i+1 << planet[i];
}
string decision = planetlength(decision);
cout<<"\n Type in Desired Planet: ";
cin >> decision;
int destination = go2planet(decision);
double conversion;
double myweight = getweight();
switch (journey) //switch can anly accept integer values to execute in C++
{
case MERCURY:
conversion = (myweight)*(0.4155);
cout<<"\n On "<< planet[0] <<" You Weigh: "<< conversion <<" lbs.";
break;
case VENUS:
conversion = (myweight)*0.8975;
cout<<"\n On"<< planet[1] <<"You Weigh: "<< conversion << " lbs";
break;
case EARTH:
conversion = (myweight)*1.00;
cout<<"\n On"<< planet[2] <<"You Weigh: "<< conversion <<" lbs";
break;
case MARS:
conversion = (myweight)*0.3507;
cout<<"\n On"<< planet[3] <<"You Weigh: "<< conversion <<" lbs";
break;
case MOON:
conversion = (myweight)*0.166;
cout<<"\n On"<< planet[4] <<"You Weigh: "<< conversion <<" lbs";
break;
case JUPITER:
conversion = (myweight)*2.5374;
cout<<"\n On"<< planet[5] <<"You Weigh: "<< conversion <<" lbs";
break;
case SATURN:
conversion = (myweight)*1.0677;
cout<<"\n On"<< planet[6] <<"You Weigh: "<< conversion <<" lbs";
break;
case URANUS:
conversion = (myweight) * 0;
cout<<"\n On" << planet[7] <<"You Weigh: "<< conversion <<" lbs";
break;
case NEPTUNE:
conversion = (myweight)*1.1794;
cout<<"\n On" << planet[8] <<"You Weigh: "<< conversion <<" lbs";
break;
case PLUTO:
conversion = (myweight)*0.0899;
cout<<"\n On"<< planet[9] <<"You Weigh: "<< conversion <<" lbs";
break;
default: cout << "\n Not a Valid Planet. Re-Enter Name";
}
return 0;
}
私はプログラミングクラスから得たコードを使用し、プログラムに合わせて修正しました。これはplanetlength()関数の1行です。 行:s [i] = planetlength(s [i]);私は今、 'charからconst charへの無効な変換'と言うエラーが出てきます。私は文字列配列を使用しています、私の関数は文字列の型であり、私の戻り値は文字列です。この隠された文字はどこですか?変数にstd::cin
からの入力を読み取るために使用されるエラー: 'char'から 'const char'への無効な変換
"cin"を列挙型にストリームすることはできません。少なくとも演算子>>をオーバーロードすることでこれを達成する方法をコンピュータに伝える必要はありません。 (これは基本的にエラーの翻訳です)ストリングをストリングに変換し、ストリングのコンテンツを介して正しい列挙型アイテムを選択します。 –
「隠し文字はどこですか?」 - 's'は文字列なので、' s [i] 'はcharです。 'planetlength(s [i])'を書くことによって、文字列を期待する関数にcharを渡します。その全体の機能は意味をなしません –