Есть у меня код:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
setlocale(0, " ");
int x,y,sum1,sum2;
sum1 = sum2 = 0;
for (; ; ) {
cout << "Введите номер своего билета" << endl;
cin >> x;
y = (x == 0 ? 1 : int(log10(x) + 1));
if (y != 6) cout << "Номер билета имеет 6 цифер, и не начинається числом '0'. Повторите попитку." << endl;
if ((y == 6) and (y % 100000 != 0)) break;
}
cout << "Всё введено верно." << endl;
sum1 += (x % 10) + (x % 1000) + (x % 100000);
sum2 += (x % 100) + (x % 10000) + (x % 1000000);
if (sum1 == sum2)cout << "Удачний билет." << endl;
else cout << "Ваш удачний билет в наступном тролейбусе" << endl;
cout << sum1 << "_" << sum2 << endl;
system("pause");
return 0;
}
Должно выводить "Удачный билет." когда сумма цифр которые стоят на непарных местах равна суме цифр стоящих на парных местах (по типу 3+6+5 = 7+4+3). Ввел 295163, и мне вывело:
Все введено верно
Ваш удачный билет в следующем троллейбусе.
95329_300389
Я ожидал на:
Все введено верно
Удачний билет.
13_13
Почему оно додаётся как текст, а не как числа? И как это исправить?
Возьмите листок бумаги и карандаш и проверьте, что Вы вычисляете.
Вот это
(x % 1000)
не третья цифра справа. А вот это
(х / 100) % 10
или вот это
(x % 1000 - x % 100) / 100
третья цифра справа.
sum1 = (x % 10) + ((х / 100) % 10) + ...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение
Я хочу уточнить один момент, касающийся использования char для доступа к элементам массива