Как изменить 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 шт):
Вы опять?
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;
}