Я не уверен, правильно ли я вас понял:
int grade (char input)
{
return 5 - (input - 'A');
}
Думайте об этом как о графике.В компьютерном кодировании, Ascii или UTF8, символы AF последовательно кодируются, причем A - это наименьшее значение, но не 0 или 1, а 65 или что-то еще, что мы точно не помним.
5 | *
4 | *
3 | *
2 | *
1 | *
0 +-- ... ------------------*----->
A B C D E F
65 6 7 8 9 70
Рисуя этот график, я упоминал, что вы переходите с формы D на F - это намеренно?Если нет:
Если мы вычтем из 5 разницу от ввода и 'A', мы получим 5 - 0 для 'A', и 5 - 1 для 'B' и так далее.Так как мы не хотим искать число для «A», мы используем «A» напрямую, что хорошо, так как мы можем выполнять арифметику для символов.
Мы могли бы также написать
return 70 - input;
или
return 'F' - input;
Стандартной формой линейного уравнения является y = mx + n, где n - прорезьось Y (70) и m = -1, градиент, отрицательный в нашем случае.