1

こんにちは、私は彼の PPP 本から Bjarne Stroustrup 演習を試みています。ほとんどの演習を行うことができましたが、1 つに問題があります。

このプログラムの基本的な考え方は、整数と文字列の両方を入力できる電卓を用意することです。実際の電卓部分は問題なく動作し、問題なく整数を入力できます。私の問題は、「1」などの文字列入力を整数に変換しようとするときにあります。

これを行う方法の私の考えは、1〜10の数字を単語で格納するベクトルを介してforループを実行し、ユーザー入力に一致する文字列を含むインデックスを見つけると、forループカウンター変数を使用することでした。これは、ユーザーが入力した量と等しくなるはずです。

このアイデアは機能するはずであり、Bjarne のサンプル コードは同様のアイデアを使用していますが、私のものはわずかに異なり、機能していないようです。私が抱えている問題は、ユーザー入力をベクトル インデックスと比較すると、一致するものが見つからないようです。何時間もいじっていますが、理由が見つからないようです。とにかくここにコードがあります:

//simple calculator program, users can input words 1-10 and an integer will be     returned. 

// header files
#include "../../std_lib_facilities.h"

//global varible- vector set up here. 
vector<string> numbers;

//functions, one to initiliase vectors, one to get number, and a main function. 

void initiliase() {  
numbers.push_back ("zero");
numbers.push_back ("one");
numbers.push_back ("two");
numbers.push_back ("three");
numbers.push_back ("four");
numbers.push_back ("five");
numbers.push_back ("six");
numbers.push_back ("seven");
numbers.push_back ("eight");
numbers.push_back ("nine");
numbers.push_back ("ten");
}

int get_number(){
char choice;
string type_val;
int val = 0;
cout << "do you wish to enter a number or word? n/w" << endl;
cin >> choice;

if ( choice == 'n'){
cin >> val;
return val;
}

else if(choice == 'w'){
cin >> type_val;
for (int i = 0; i<numbers.size(); i++){
    if (numbers[i] == type_val)
    val = i;
else
    cout << "number not found in vector.";
    return val;
 }
}
}

      void print_answer(int ans, char oper, int val1,int val2) {
cout << "Your Answer is:" << ' ' << val1 << ' ' << oper << ' ' << val2 << ' ' << '=' <<   ans << endl;

}

void main() {

initiliase(); 
int val1, val2, answer;
char op;
val1 = get_number();
val2 = get_number();
cout << "Please input operation:";
cin >> op; 
switch (op){

case '+': cout << "You have chosen addition!" << endl;
      answer = val1 + val2;
      print_answer (answer, op, val1, val2);
      break;
case '-': cout << "you have chosen subtraction!" << endl;
      answer = val1 - val2;
          print_answer (answer, op, val1, val2);
      break;
case '*': cout << "you have chosen multiplication!" << endl;
          answer = val1 * val2;
          print_answer (answer, op, val1, val2);
      break;
case '/': cout << "you have chosen division!" << endl; 
          answer = val1 / val2;
      print_answer  (answer, op, val1, val2);
      break;
case '%': cout << "you have chosen modulos!" << endl;
      answer = val1 % val2;
      print_answer (answer, op, val1, val2);
      break;
default: cout << "incorrent operation" << endl;
}
keep_window_open ("~");
}
4

2 に答える 2