ユーザーが使用する測定単位(インチ= i、フィート= fなど)を表す数字と文字を入力し、入力された文字が一連のifステートメントで使用されるプログラムを作成しようとしています数値をメートル数に変換する関数を確認します。測定単位 (文字列変数として使用されている) の入力検証を追加しました。私の問題は、使用したい文字を入力すると、入力が正しい場合でも、入力したものが無効であるとプログラムが判断することです。入力の検証を削除したところ、文字列が if ステートメントを通過していないことにも気付きました。#include が含まれているコードは次のようなものです。
#include <iostream>
#include <string>
using namespace std;
float inTOmeters(float);
float ftTOmeters(float);
float cmTOmeters(float);
float yTOmeters(float);
int main{
float measurement, measurement;
string unit;
cout<<"Enter the number you want to be measured"<<endl;
cin>>measure;
cout<<"Now enter the unit of measurement you want to use"<<endl;
cout<<"i=inches, f=feet, c=centimeters, y=yards, m=meters"<<endl;
cin<<unit;
while(unit !="i"||unit !="m"||unit !="c"||unit !="y"||unit !="f"){
cout<<"Invalid input pick from I, m, c, y, or f"<<endl;
cin>>unit;
}
if(unit=="i"){
measurementm=inTOmeters(measurement);
}
if(unit=="c"){
measurementm=cmTOmeters(measurement);
}
if(unit=="f"){
measurementm=ftTOmeters(measurement);
}
if(unit=="y"){
measurementm=yTOmeters(measurement);
}
else{
measurementm=measurement;
}
cout<<"your measurement will be"<<measurementm<<"in meters."<<endl;
}
関数が機能することがわかっているため、関数は含めませんでした。私の質問は、正しい入力が与えられたときにループとifステートメントが機能するようにするにはどうすればよいですか? また、コードが正しい入力の大文字を受け入れるようにするにはどうすればよいですか?