Другие языки программирования и технологии

Помогите с помощью однострочных комментариев объясните программу каждую строчку. Кому не сложно :D Заранее спасибо

int getCharInt(const string& strTest) {
size_t index = 0;
bool isNeg = false;
switch (strTest[index]) {
case '-': isNeg = true;
case '+': index++;
default: if (isdigit(strTest[index]) && strTest[index + 1] == '\0') {
int result = strTest[index] - '0';
if (isNeg) result = -result;
return result;
}
}
return 10;
}

int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

const string results[] = { "ноль", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять" };
const string sign = "минус ";

string s;
int value;
do {
cin >> s;
value = getCharInt(s);
} while (abs(value)>9);

if (value < 0) { cout << sign; value = -value; }
cout << results[value] << endl;
}
Щаз. С++

Спросили бы у меня в комментах там... Или комменты закончились?

//Фунция - поступает ссылка на строку, возвращает
//-9..9 если строка представляет собой число с вариантами
//+/- или без знака [0..9] конец строки и возвращает это число
//Если преобразование не удалось - возвращает 10 как признак ошибки
int getCharInt(const string& strTest) {
size_t index = 0;
//По умолчанию считаем, что число положительное
bool isNeg = false;
//Проверяем нулевой элемент строки (первый символ)
switch (strTest[index]) {
//Если это минус - запоминаем, что число отрицательное и _продолжаем_ дальше
case '-': isNeg = true;
//Если это плюс или минус - просто передвигаемся на след. символ
case '+': index++;
//В любом случае (передвинулись мы на след. символ или нет - проверяем число текущий символ ('0'..'9') и есть ли после него признак окончания строки
default: if (isdigit(strTest[index]) && strTest[index + 1] == '\0') {
//Если да - преобразуем символ в число отнимая от символа код символа '0'
int result = strTest[index] - '0';
//Если оно было отрицательным - инвертируем знак
if (isNeg) result = -result;
//И возвращаем результат
return result;
}
}
//Иначе возвращаем 10 (ошибку) символ от 0..9 не может быть = 10
return 10;
}

Остальное вроде-бы всё более-менее очевидно. Если нет - пишите в комменты.
Юрий Златов
Юрий Златов
84 764
Лучший ответ
паскаль

Похожие вопросы