Усеченный оператор If C ++ (превращение букв в цифры)

Я пытаюсь изменить серию букв в числа с 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;
}

-2

Решение

Я думаю, что проблема в вашем входе. Вы вводите заглавные или строчные буквы? Их Коды ASCII разные. Итак, вы, вероятно, хотите изменить код из

num= static_cast<int>(letters)-static_cast<int>('A');

что-то вроде

if (num >= 'a')
num = letters - 'a';
else
num = letters - 'A';

Также, как упомянуто @jtbandes, используйте фигурные скобки { а также }, Пробелы не определяют область действия в C ++. Даже если это будет только одна строка кода после вашего оператора if, это избавит вас от головной боли в будущем.

0

Другие решения

Нужно ли статическое приведение? Я рекомендую использовать строковый поток или просто перебирать строковый символ за символом с помощью .at () и полагаться на значения ascii для преобразования. http://web.cs.mun.ca/~michael/c/ascii-table.html.

0

По вопросам рекламы [email protected]