我是一名新的C++學生,並且正在處理一個需要爲特殊字符指定數字的問題。如何將數字分配給以下字符「@」或「#」或「^」和「*」
練習要求設置字符@爲2,#爲3,^爲4,*爲5.例如,如果用戶輸入@#^ *,它應該與輸入(2 + 3 + 4 + 5)。
謝謝,約翰。
我是一名新的C++學生,並且正在處理一個需要爲特殊字符指定數字的問題。如何將數字分配給以下字符「@」或「#」或「^」和「*」
練習要求設置字符@爲2,#爲3,^爲4,*爲5.例如,如果用戶輸入@#^ *,它應該與輸入(2 + 3 + 4 + 5)。
謝謝,約翰。
你可以使用一個簡單的字符數組:
static const char symbols[] = {'@', '#', '^', '*'};
char c;
std::cin >> c;
unsigned int value;
for (value = 0; value < sizeof(symbols); ++value)
{
if (c == symbols[value])
{
break;
}
}
if (value >= sizeof(symbols))
{
// Symbol not found.
}
else
{
value += 2;
}
上面的代碼搜索符號字符數組。如果符號存在,則索引是與該符號關聯的值。但是,由於@
符號是第一個,並且數組索引從0開始,所以在找到該值後,通過將數組索引加2來進行調整。
編輯1:查找表
另一種方法是使用查找表。創建一個包含關係的結構,然後創建這些結構的數組。
struct Relationship
{
char c;
unsigned int value;
};
Relationship table[] =
{
{'@', 2}, {'#', 3}, {'^', 4}, {'*', 5},
};
const unsigned int TABLE_SIZE =
sizeof(table)/sizeof(table[0]);
char c;
cin >> c;
unsigned int value = 0;
for (unsigned int i = 0; i < TABLE_SIZE; ++i)
{
if (table[i].c == c)
{
value = table[i].value;
break;
}
}
編輯2:使用switch
的另一種方法是使用switch
語句:
char c = '\0';
cin >> c;
unsigned int value;
switch (c)
{
case '@': value = 2; break;
case '#': value = 3; break;
case '^': value = 4; break;
case '*': value = 5; break;
default: value = 0; break;
}
的如果/其他梯:
編輯3:程序:
#include <iostream>
using std::cin;
using std::cout;
int main(void)
{
cout << "Enter symbol: ";
char c;
cin >> c;
unsigned int value = 0U;
if (c == '@')
{
value = 2;
}
else if (c == '#')
{
value = 3;
}
else if (c == '^')
{
value = 4;
}
else if (c == '*')
{
value = 5;
}
else
{
value = 0;
}
cout << "\nYour value: " << value;
return 0;
}
採樣運行:
C:\Debug>symbol_matching.exe
Enter symbol: @
Your value: 2
C:\Debug>symbol_matching.exe
Enter symbol: *
Your value: 5
C:\Debug>symbol_matching.exe
Enter symbol:^
Your value: 4
C:\Debug>symbol_matching.exe
Enter symbol: #
Your value: 3
注:我輸入特殊符號,接着按回車。
我試過使用「if/else ladder」。當輸入特殊字符時,我得到一個00作爲回報。 ei:cin >> c; cout <<「你輸入」<< c << value << endl ;.回報是:你輸入00.我做錯了什麼? – John
用**編輯3 **查看我的更改。我不知道你在哪裏發表你的言論。 –
A std::map<char, int>
可能會做你所需要的。
你試過一個狀態機嗎? – zaratustra
使用開關來映射您的角色。 – ZDF