Здравствуйте, подскажите пожалуйста что не так в этой программе
#include
using namespace std;
int main()
{
int n;
int x;
cin>>n;
x=n/3;
if(x*3==n){
if((n%10==0)||(n%10==3)||(n%10==6)){
n=n+3;
}
if(n%10==9){
n=n-3;
}
}
if(x*3!=n){
if((x*3)%10==0||(x*3)%10==3||(x*3)%10==6){
n=x*3;
}
if(n%10==9){
n=(x*3)+4;
}
}
cout<<n<<endl;
return 0;
}
Когда ввожу 123 то он выводит 123 а не должен!
Вот сообственно текст задачи...
Дано число. В этом числе необходимо изменить одну цифру таким образом, чтобы
новое число делилось на 3 и было бы максимально возможным. В исходном числе нужно
обязательно изменить одну цифру, даже если исходное число уже делилось на 3.
Программа получает на вход одно длинное натуральное число. Длина числа может
достигать 100 цифр.
Программа должна вывести другое натуральное число, удовлетворяющее условиям:
1. Новое число должно отличаться от данного ровно одной цифрой.
2. Новое число должно делиться на 3.
3. Новое число должно быть максимально возможным из всех таких чисел.
Другие языки программирования и технологии
Програмирование на С++, нахождение ошибки
Здравствуйте, подскажите пожалуйста что не так в этой программе
#include
using namespace std;
int main()
{
int n;
int x;
cin>>n;
x=n/3;
if(x*3==n){
if((n%10==0)||(n%10==3)||(n%10==6)){
n=n+3;
}
if(n%10==9){
n=n-3;
}
}
if(x*3!=n){
if((x*3)%10==0||(x*3)%10==3||(x*3)%10==6){
n=x*3;
}
if(n%10==9){
n=(x*3)+4;
}
}
cout<<n<<endl;
return 0;
}
Когда ввожу 123 то он выводит 123 а не должен!
Вот сообственно текст задачи...
Дано число. В этом числе необходимо изменить одну цифру таким образом, чтобы
новое число делилось на 3 и было бы максимально возможным. В исходном числе нужно
обязательно изменить одну цифру, даже если исходное число уже делилось на 3.
Программа получает на вход одно длинное натуральное число. Длина числа может
достигать 100 цифр.
Программа должна вывести другое натуральное число, удовлетворяющее условиям:
1. Новое число должно отличаться от данного ровно одной цифрой.
2. Новое число должно делиться на 3.
3. Новое число должно быть максимально возможным из всех таких чисел.
#include
using namespace std;
int main()
{
int n;
int x;
cin>>n;
x=n/3;
if(x*3==n){
if((n%10==0)||(n%10==3)||(n%10==6)){
n=n+3;
}
if(n%10==9){
n=n-3;
}
}
if(x*3!=n){
if((x*3)%10==0||(x*3)%10==3||(x*3)%10==6){
n=x*3;
}
if(n%10==9){
n=(x*3)+4;
}
}
cout<<n<<endl;
return 0;
}
Когда ввожу 123 то он выводит 123 а не должен!
Вот сообственно текст задачи...
Дано число. В этом числе необходимо изменить одну цифру таким образом, чтобы
новое число делилось на 3 и было бы максимально возможным. В исходном числе нужно
обязательно изменить одну цифру, даже если исходное число уже делилось на 3.
Программа получает на вход одно длинное натуральное число. Длина числа может
достигать 100 цифр.
Программа должна вывести другое натуральное число, удовлетворяющее условиям:
1. Новое число должно отличаться от данного ровно одной цифрой.
2. Новое число должно делиться на 3.
3. Новое число должно быть максимально возможным из всех таких чисел.
в первом if-е ты прибавляешь 3, у тебя x=41 и n=126
дальше идёт второй if, x*3=123!=126
поэтому он выполняется и в нём получается опять n=x*3=123
тебе бы не пришлось задавать этот вопрос, если бы ты научился пользоваться отладчиком и прогнал программу по шагам
ну и в принципе решение неправильное, т. к. по логике для выполнения 3-го условия нужно как-то колупать старшие разряды, а у тебя походу только младший меняется
дальше идёт второй if, x*3=123!=126
поэтому он выполняется и в нём получается опять n=x*3=123
тебе бы не пришлось задавать этот вопрос, если бы ты научился пользоваться отладчиком и прогнал программу по шагам
ну и в принципе решение неправильное, т. к. по логике для выполнения 3-го условия нужно как-то колупать старшие разряды, а у тебя походу только младший меняется
Неизвестно Неизвестно
Я вот как раз не могу понять почему он выполняется во 2, там же стоит условие под которое число 123 не подходит под условие
Похожие вопросы
- Програмирование в VBA
- о програмировании
- Создание сайтов и програмирование
- какой язык лучше для програмирования?
- Какой язык програмирования учить ?
- по делфи прога нахождение квадратного корня( ошибка в проге) помогите найти и исправить
- КТО знает програмирование по QBASIC Описание темы: ПОМОГИТЕ НАЙТИ ОШИБКИ В ПРОГРАММЕ
- хочу занятся програмированием...какой язык програмирования посоветуете?
- Подскажите пожалуйста какой язык програмирования лучше всего начать изучать в самом начале и начинающему програмисту?
- вечный вопрос...с какого языка програмирования начать?но теперь есть конкретно цели...