Ваш код содержит несколько ошибок, которые мешают его корректной работе. Во-первых, вы не проверяете, сколько цифр содержит число, и не обрабатываете случай, когда число имеет меньше четырех цифр. Во-вторых, переменные `dq`, `dw`, `de`, `dr` не используются правильно для проверки симметричности числа. Вот исправленная версия программы:
#include
#include // Для работы с строками
using namespace std;
bool isSymmetric(int number) {
string strNumber = to_string(number); // Преобразуем число в строку
int left = 0;
int right = strNumber.length() - 1;
// Проверяем, является ли строка симметричной
while (left < right) {
if (strNumber[left] != strNumber[right])
return false;
left++;
right--;
}
return true;
}
int main() {
int x;
cin >> x;
// Проверяем, является ли число симметричным
if (isSymmetric(x))
cout << 1 << endl;
else
cout << 0 << endl; // Вместо "любого другого числа" выводим 0
return 0;
}
Александр ХанбековУченик (133)
3 месяца назад
Все задачи необходимо решать, используя только операторы присваивания и операции целочисленной арифметики. Решения, использующие другие конструкции языка или функции, будут отмечаться неверными. Вот так пишет.
Дано целое неотрицательное число, меньшее 10000
Если число имеет меньше 4 знаков в десятичной записи, то нужно считать, что его десятичная запись дополняется слева незначащими нулями (например, число 120 дополняется до 0120 ). Определите, является ли десятичная запись числа симметричной.
Входные данные
Дано целое неотрицательное число, меньшее 10000
Выходные данные
Если число симметричное, то выведите 1
в противном случае выведите любое другое целое число.
#include <iostream>
using namespace std;
int main() {
int x;
dq = x % 10;
x = x / 10;
dw = x % 10;
x = x / 10;
de = x % 10;
x = x / 10;
dr = x;
left = dr * 10 + de;
right = dq * 10 + dw;
cout << left - right + 1 << endl;
return 0;
}
выдает ошибку(