Напишите программу, в которой будут выводиться все номера определенного диапазона, которые могут быть разделены на их сумму и произведение их четных позиций. Между тем, если есть 0 на четном месте, игнорировать его. Я написал программу ниже, но, похоже, она рушится, когда она запускалась по какой-то причине. Нет ошибок, программы работают нормально, затем я ввожу диапазон, и он сбой.Проверьте, является ли сумма/произведение цифр в четном положении числом
#include <iostream>
using namespace std;
int zbirparnicifri(int x);
int proizparnicifri(int x);
int main()
{
int x, y, br = 0;
cin >> x >> y;
for (int i = x; i <= y; i++){
int proizcif = proizparnicifri(i);
int zbircif = zbirparnicifri(i);
if(zbircif != 0 && proizcif != 0){
if (i % proizcif == 0 && i % zbircif == 0){
cout << i << endl;
br++;
}
}
}
return 0;
}
int zbirparnicifri(int x)
{
int sum = 0;
while(x > 0){
if (x % 100 != 0)
sum += x % 100;
x /= 100;
}
return sum;
}
int proizparnicifri(int x)
{
int proiz = 1;
while(x > 0){
if (x % 100 != 0)
proiz *= x % 100;
x /= 100;
}
return proiz;
}
Оператор% - это деление, возвращает остаток. Вы можете делиться на ноль. –
Спасибо, кажется, исправляет проблему, однако мое решение недостаточно для проверки «четных» позиций чисел без использования массивов. – user3002211
Можете ли вы рассчитать цифры от let, скажем, диапазон от 0 до 20, который вы хотите, чтобы ваша программа была в списке, может сделать вещи немного яснее. –