Как изменить Y?

Дано двузначное число ?.Если сумма его цифр кратна ?, а первая цифра меньше ?, уменьшить все его цифры на 5 (по модулю); если сумма его цифр кратна ?, а первая цифра больше ?, увеличить все его цифры на 5 (по модулю 10); если сумма его цифр не кратна ?, а первая цифра меньше ?, уменьшить все его цифры на 4 (по модулю); если сумма его цифр не кратна ?, а первая цифра больше ?, увеличить все его цифры на 4 (по модулю 10); в остальных случаях—увеличить все его цифры на 2 (по модулю 10).На экран вывести новое число, а не набор цифр. Вот мой код:

#include <iostream>
 #include <cmath>
using namespace std;
 int main() 
 {
     setlocale(LC_ALL, "RUS");
     int A, X,y1,Y;
     cout << "Введите двузначное число\n";
     cin >> A;
     cout << "Введите однозначное число\n";
     cin >> X;
     //проверка на корректный ввод
     if (A < 10 || A > 99 || X <= 0 || X > 9) cout << "Неправильно введены данные\n";
     else { //все хорошо
         int b = A / 10;
         int c = A % 10;
         int S = b + c;
         int bn, cn, y1;
         if (S % X == 0 && bn < y1)
         { //сумма кратна X
             if (c % X == 0)
             { //вторая цифра кратна X
                 bn = abs((b - 5));
                 cn = abs((c - 5));
             }
             else { //первая цифра не кратна X
                 bn = b * 2 % 10;
                 cn = c * 2 % 10;

             }

         }

         if (S % X == 0 && bn > y1)
         { //сумма кратна X
             if (c % X == 0)
             { //вторая цифра кратна X
                 bn = (b + 5) % 10;
                 cn = (c + 5) % 10;

             }
             else { //первая цифра не кратна X
                 bn = b * 2 % 10;
                 cn = c * 2 % 10;

             }

         }

         else { //сумма не кратна X
             if (c % X == 0 && bn < y1) 
             { //вторая цифра кратна X
                 bn = (b + 5) % 10;
                 cn = (c + 5) % 10;

             }
             { //первая цифра не кратна X
                 bn = abs((b - 4));
                 cn = abs((c - 4));


             }

         }
         if (S % X == 0 && bn > y1)
         { //сумма кратна X
             if (c % X == 0)
             { //вторая цифра кратна X
                 bn = (b + 5) % 10;
                 cn = (c + 5) % 10;

             }
             else { //первая цифра не кратна X
                 bn = b * 2 % 10;
                 cn = c * 2 % 10;

             }

         }
         else 
             { //сумма не кратна X
                 if (c % X == 0 && bn > y1)
                 { //вторая цифра кратна X
                     bn = (b + 5) % 10;
                     cn = (c + 5) % 10;

                 }
                 { //первая цифра не кратна X
                     bn = abs((b + 4));
                     cn = abs((c + 4));

                 }

             }
         Y = 10 * bn + cn; //создаем новое число
         cout << Y << endl;
        
    }
     system("pause");
     return 0;
    
}   

Дал весь код чтобы потом не было вопросов.Можете помочь пожалуйста с реализацией задачи верно?


Ответы (2 шт):

Автор решения: Mikhailo

Вы опять?

int Result(int A, int X, int Y) {
    int R;
    int sumA = A % 10 + A / 10;

    // Если сумма его цифр кратна X, а первая цифра меньше Y
    // если сумма его цифр кратна X, а первая цифра больше Y
    if (sumA % X == 0 && A / 10 != Y) R = 5;
    else // если сумма его цифр не кратна X, а первая цифра меньше Y
        if (sumA % X != 0 && A / 10 < Y)  R = 6;
        else // если сумма его цифр не кратна X, а первая цифра больше Y
            if (sumA % X != 0 && A / 10 > Y)  R = 4;
            else R = 2;

    return ((A / 10 + R) % 10) * 10 + (A % 10 + R) % 10;
    }

Можете перед использованием сами проверить двузначность A и т.д.

→ Ссылка
Автор решения: Юрий

Окей,я написал программу верную,спустя 4 часа))Вот код:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int A, X, Y, result; // объявлем переменные
cout «"Введите двузначное число A" « endl;
cin » A; //вводим двухзначное число
cout « "Введите число X" « endl;
cin » X; // вводим число Х
cout « "Введите число Y" «endl;
cin » Y; // вводим число Y

//проверяем правильность введеных значений, иначе ввыводим сообщение об ошибке
if (A < 10 || A > 99 || X <= 0 || X > 9|| Y<=0 || Y> 9)
{
cout « "Некорректный ввод" « endl;
}

else
{

// делением и нахождением остатка от деления получаем цифры по отдельности введеного числа
int A1 = A / 10; // первая цифра числа
int A2 = A % 10; // вторая цифра числа
int sum = A1 + A2;
//ход решения проверка условий

//проверка 1 условия задачи
if ((sum % X == 0) && (A1 < Y))
{
A1 = abs((A1 - 5))* 10;
A2 = abs(A2 - 5);
result = A1 + A2;
}

//если сумма кратна ?, а первая меньше ?, увеличить число ? на 5
else if ((sum % X == 0) && (A1 >Y))
{
A1 = ((A1 + 5)) % 10 * 10;
A2 = (A2 + 5) % 10;
result = A1 + A2;
}

//если сумма не кратна ?, а первая меньше ?, уменьшить число ? на 4
else if ((sum % X != 0) && (A1 <Y))
{
A1 = ((A1 - 4)) % 10 *10 ;
A2 = (A2 - 4) % 10 ;
result = A1 + A2;
}
else if ((sum % X != 0) && (A1 >Y))
{
A1 = ((A1 + 4)) % 10 * 10;
A2 = (A2 + 4) % 10;
result = A1 + A2;
}


//остальные случаи увеличить число А на 2
else
{
A1 = abs((A1 + 2)) % 10 *10;
A2 = abs(A2 + 2) % 10;
result = A1 + A2;
}
//вывод результата программы, нового преобразованного числа
cout « "Результат " « result « endl;
}
system("pause");
return 0;
}
→ Ссылка