graph TD
A[Начало] --> B[Преобразовать A в строку]
B --> C[Инициализировать пустую строку result]
C --> D{Для каждой цифры i в A}
D --> |Да| E{Цифра == '2'?}
E --> |Да| F{Не крайняя цифра?}
F --> |Да| G[Вычислить среднее из соседних цифр]
F --> |Нет| H[Вычислить половину текущей цифры]
G --> I[Добавить результат в result]
H --> I
E --> |Нет| J[Добавить текущую цифру в result]
I --> D
J --> D
D --> |Нет| K[Преобразовать result в число]
K --> L[Вернуть результат]
L --> M[Конец]
#include <string>
#include <cmath>
int replaceDigit(int A) {
std::string strA = std::to_string(A);
int n = strA.length();
std::string result = "";
// Проходим по каждой цифре в числе
for (int i = 0; i < n; ++i) {
if (strA[i] == '2') {
// Вычисление среднего для не крайних цифр
if (i > 0 && i < n - 1) {
int avg = (strA[i - 1] + strA[i + 1] - 2 * '0') / 2;
result += std::to_string(avg);
}
else { // Вычисление среднего для крайних цифр
int avg = (strA[i] - '0') / 2;
result += std::to_string(avg);
}
}
else {
result += strA[i];
}
}
return std::stoi(result);
}
int main() {
setlocale(LC_ALL, "Russian");
int A = 921432;
int result = replaceDigit(A);
std::cout << "Результат: " << result << std::endl;
return 0;
}