Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/75: Рейтинг темы: голосов - 75, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 44

Узнать, кратно ли введённое число трём

26.01.2017, 22:59. Показов 14735. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int a,b,c,d,e,f,g,h;
cout<<"Введите пятизначное число: ";
cin>>a;
b=(a/10000);
c=(a/1000)%10;
d=(a/100)%10;
e=(a/10)%10;
f=a%10;
g=b+c+d+e+f;
h=g/3;
if(h=3)
{printf("Кратно 3");}
else
{printf("Не кратно 3");}
Суть задания полностью отображается в названии темы. При компиляции выводит в консоль лишь строку мол "кратно 3", вне зависимости от того, какие числа вводить. Не подскажете, где здесь может быть ошибка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2017, 22:59
Ответы с готовыми решениями:

Дано четырехзначное число: кратно ли произведение его цифр трем, кратно ли числу а произведение его первых двух цифр?
Дано четырехзначное число. Определить: а) кратно ли произведение его цифр трем; б) кратно ли числу а произведение его первых двух цифр ...

Дано натуральное число х. Определить кратно ли это число 2, 3, 5
Разработать программу, использующую разветвления в visual c++ 6.0 с коментариями

Как узнать из скольких цифр состоит введённое число
Имеется целое число. Определить, из скольких цифр оно состоит.Если можно, написать решение самым простым методом.И ещё похожий...

9
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
26.01.2017, 23:22
Цитата Сообщение от Eugene1222 Посмотреть сообщение
где здесь может быть ошибка?
Везде. Начиная с
C++
1
h=3
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.01.2017, 23:26
Eugene1222,
Если не обязательно искать сумму цифр, то можно несколько упростить:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main()
{
    int n;
    cout << "Enter n:";
    cin >> n;
    cout << (n%3==0?"Yes":"No");
    return 0;
}
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
26.01.2017, 23:28
Цитата Сообщение от Eugene1222 Посмотреть сообщение
Суть задания полностью отображается в названии темы.
Тогда что это такое и к чему эти манипуляции?

C++
1
2
3
4
b=(a/10000);
c=(a/1000)%10;
d=(a/100)%10;
e=(a/10)%10;
0
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
26.01.2017, 23:35
существует замечательный оператор.. остаток от деления (%) называется.. именно она вам и необходима.. вместо
Цитата Сообщение от Eugene1222 Посмотреть сообщение
C++
1
2
3
4
5
6
7
b=(a/10000);
c=(a/1000)%10;
d=(a/100)%10;
e=(a/10)%10;
f=a%10;
g=b+c+d+e+f;
h=g/3;
0
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 44
26.01.2017, 23:37  [ТС]
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Тогда что это такое и к чему эти манипуляции?

C++
1
2
3
4
b=(a/10000);
c=(a/1000)%10;
d=(a/100)%10;
e=(a/10)%10;
Это просто я люблю создавать себе лишние проблемы. Лишь начинаю предпринимать первые попытки в изучении языка. Мой план действий был таков, что изначально я делю введённое пятизначное число на отдельные цифры, потом эти цифры суммирую и если эта сумма делится на 3 - то и число кратно 3, в других случаях - оно не кратно. Можно всё же узнать в чём ошибка в моём изначальном коде за исключением одного "="?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.01.2017, 23:58
Eugene1222,
Во первых, просматривается логическая ошибка: зачем искать сумму цифр и проверять, делится ли она на 3, если можно сразу проверить делится ли число на 3.
Во-вторых, логическая ошибка в следующих строках (даже если исправить = на ==)
C++
1
2
h=g/3; //находим результат деления g на 3. 
if(h==3) //проверяем, равен ли результат от деления 3-м
Результат деления равный 3-м не может сказать, делится ли g на 3. Если результат деления числа на 3 равен трем, то можно сказать, что число равно 9, 10 или 11.
Вот если проверять остаток от деления на 3 на равенство нулю, то будет правильно:
C++
1
if(g%3==0)
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
27.01.2017, 00:00
Цитата Сообщение от Eugene1222 Посмотреть сообщение
Лишь начинаю предпринимать первые попытки в изучении языка. Мой план действий был таков, что изначально я делю введённое пятизначное число на отдельные цифры, потом эти цифры суммирую и если эта сумма делится на 3 - то и число кратно 3, в других случаях - оно не кратно.
Хорошо. Но мне не совсем понятна логика такого подхода.

Вам надо проверить, делится ли число на 3. Как это сделать "сразу" вы, предположим, не знаете. Поэтому вы решили применить "школьный" признак делимости на на 3 и для начала вычислить сумму цифр вашего числа. Прекрасно. Пусть будет так.

Вычислили сумму цифр.

Теперь вам надо проверить, делится ли эта сумма на 3. Так а как вы это собираетесь проверять? Это же та же самая задача, с которой вы начали! Вы ведь не знаете как "сразу" проверить делимость числа на 3. Что вы собираетесь делать с полученной суммой цифр в такой ситуации?

Следуя вашей логике, вы должны снова рекурсивно применить тот же самый подход: теперь вычислять сумму цифр вашей суммы цифр... А затем снова вычислять сумму цифр суммы суммы цифр... И так далее, и так далее, и так далее до тех пор, пока задача не станет тривиальной, т.е. например, пока сумма не станет однозначной. Тогда можно будет сразу сказать, что 3, 6 и 9 делятся на 3, а все остальное - не делится.

Вот это было бы логичной реализацией вашего подхода с суммой цифр.

Но у вас этого нет. У вас сумма цифр вычисляется один раз. Потом она делится на 3 и частное от этого деления зачем-то сравнивается с 3. Зачем? Причем тут частное вообще? Например, 15 / 3 = 5. Частное 5 не равно 3 и поэтому, согласно вашей логике 15 не делится на 3. Это бессмыслица какая-то.
0
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
27.01.2017, 00:05
Цитата Сообщение от Eugene1222 Посмотреть сообщение
Это просто я люблю создавать себе лишние проблемы. Лишь начинаю предпринимать первые попытки в изучении языка. Мой план действий был таков, что изначально я делю введённое пятизначное число на отдельные цифры, потом эти цифры суммирую и если эта сумма делится на 3 - то и число кратно 3, в других случаях - оно не кратно. Можно всё же узнать в чём ошибка в моём изначальном коде за исключением одного "="?
А вы понимаете,что вы делаете? Вы берете сумму цифр,делите ее на 3 и говорите потом,что ,мол,если эта сумма,поделенная на три равна трем,то число делится на три.
Признак делимости звучит так "Если сумма цифр числа делится на три,то и само число делится на три."
Делится на три - значит при делении на три этого числа,не должно возникнуть остатка, снова же включаем операцию % - деление по модулю.
Вот так выглядит то,что вы хотите написать :
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
 
 
int main()
{
    int a, b, c, d, e, f;
    std :: cout << "Input a number which contains 5 digits : ";
    std :: cin >> a;
    b = a / 10000;
    c = a / 1000 % 10;
    d = a / 100 % 10;
    e = a / 10 % 10;
    f = a % 10;
    if ((b + c + d + e + f) % 3 == 0)
    {
        std :: cout << "It can be divided by 3!" << std :: endl ;
    }
    else
    {
        std::cout << "It can not be divided by 3!" << std::endl;
    }
 
    system("pause");
    return 0;
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
27.01.2017, 00:26
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Как это сделать "сразу" вы, предположим, не знаете.
Однако у вас в коде уже присутствует применение оператора %, который сам по себе способен дать ответ на вопрос о делимости на 3: a % 3 == 0

И даже без использования оператора % делимость можно распознать как a / 3 * 3 == a.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.01.2017, 00:26
Помогаю со студенческими работами здесь

Определить, сколько чисел кратно трём
Имеется 3 целых числа. Определить, сколько среди них кратных 3

Индексы элементов,значение которых кратно трём
составьте программу, которая формирует массив из шестнадцати целых чисел от -20 до 20 и находит в этом массиве индексы элементов,значения...

Сколько полученных чисел будет кратно трём?
Из чисел 1, 2, 3,...100 составлены все возможные парные произведения. Сколько полученных чисел будет кратно трём?

Логическое выражение. Данное натуральное число N кратно K, но не кратно L
1. Составить логическое выражение, значение которого равно True, если высказывание истинно, и False, — если ложно. Данное натуральное...

Определить, что натурально число N кратно K, но не кратно L
Составить логическое выражение, значение которого равно True, если высказывание истинно, и False если ложно. Данное натурально число N...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru