Я пытаюсь изменить серию букв в числа с C ++ и начал с создания этого кода.
Однако, похоже, что математика, которая вычисляет переменную digit1, никогда не выполняется.
Какие-нибудь мысли?
#include <iostream>
#include <string>
using namespace std;
int main()
{
int qtyofnumbers, num, digit1, counter;
char letters, upperlower;
cout << "Enter a letter: ";
cin >> letters;
for (counter = 0; counter < 8; counter++)
{
if (counter == 3)
cout << "-";
num = static_cast<int>(letters) - static_cast<int>('A');
if (0 <= num && num < 26)
digit1 = (num / 3) + 2;
if (((num / 3 == 6 ) || (num / 3 == 7)) && (num % 3 == 0))
digit1 = digit1-1;
if (digit1 > 9)
digit1 = 9;
cin >> letters;
}
cout << digit1;
return 0;
}
Я думаю, что проблема в вашем входе. Вы вводите заглавные или строчные буквы? Их Коды ASCII разные. Итак, вы, вероятно, хотите изменить код из
num= static_cast<int>(letters)-static_cast<int>('A');
что-то вроде
if (num >= 'a')
num = letters - 'a';
else
num = letters - 'A';
Также, как упомянуто @jtbandes, используйте фигурные скобки {
а также }
, Пробелы не определяют область действия в C ++. Даже если это будет только одна строка кода после вашего оператора if, это избавит вас от головной боли в будущем.
Нужно ли статическое приведение? Я рекомендую использовать строковый поток или просто перебирать строковый символ за символом с помощью .at () и полагаться на значения ascii для преобразования. http://web.cs.mun.ca/~michael/c/ascii-table.html.