0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
1

Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз

19.09.2012, 21:38. Показов 11910. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Видел похожу здесь на форуме но она на pascale как писать в c++ я не понял.
Дано натуральное число. Найти произведение четных цифр этого числа. Верно ли, что число со-держит данную цифру А более двух раз (А вводить с клавиатуры).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2012, 21:38
Ответы с готовыми решениями:

дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти...

Дано случайное число. Найти произведение четных цифр этого числа
Дано случайное число. Найти произведение четных цифр этого числа.

Дано натуральное число а. Найти произведение четных цифр этого числа
Добрый день! Ребята помогите пожалуйста с задачей, нужен код для VBA. Заранее благодарю. Дано...

Найти такое число, что сумма его цифр превосходит произведение цифр этого же числа на 1
сумма цифр заданного четырехзначного N превосходит произведение цифр этого же числа на 1. ПОМОГИТЕ...

24
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 21:56 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
int main()
{
 int a,n,x=0,prod=1;
 std::cout<<"Number, A: ";
 std::cin>>n>>a;
 while (n)
  {
   if((n%10)%2==0)
    prod*=(n%10);
   if ((n%10)==a)
    x++;
   n/=10;
  }
 std::cout<<"Product: "<<prod<<"\n"; 
 (x>2)? std::cout<<"True\n": std::cout<<"False\n";
 system("pause");
 return 0;
}
1
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 22:03  [ТС] 3
Спс, но хочу сделать через for но пока очень плохо понимаю. И не могу понять как мне сделать умножение четных чисел.
Вот пока что я сам сделал :
int main()
{
int n;
setlocale(LC_ALL, "Russian");

Console::WriteLine(L"Введите натуральное число");
cin>>n;
if(n>=0)
{
int j;
for(j=1; j<=n; j++)
if(j % 2 == 0)
cout<<j ;
Пока что вот он мне выводит четные числа, но как умножить их даже не представляю
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 22:10 4
Если просто перемножить четные, то можно и так:
C++
1
2
3
4
5
6
7
int prod=1;
...
if(j % 2 == 0)
 { 
  prod=prod*j;
  cout<<j ;
 }
Т.е. должна быть переменная (назовем, например, prod), равная 1, т.к. если выполняется условие четности, то четное число умножается на эту переменную. И так каждый раз, пока не пройдет весь цикл.
0
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 22:22  [ТС] 5
Что то не получается ввожу 6 консоль выдает 7, ввожу 7 выводится 8. Может не правильно применил новую переменную?
nt main()
{
int n, m=1;
setlocale(LC_ALL, "Russian");

Console::WriteLine(L"Введите натуральное число");
cin>>n;
if(n>=0)
{
int j;
for(j=1; j<=n; j++)
if(j % 2 == 0)
m=m*j;
cout<<j;
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 22:28 6
freshness, выводить нужно m.
1
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 22:36  [ТС] 7
Так отлично это сделал, все проверил работает, теперь нужно сделать вторую часть.
Верно ли, что число со-держит данную цифру А более двух раз (А вводить с клавиатуры).
Как я понял когда у меня получится произведение четных чисел выходит например число 1421 и если у меня A будет 4 то это меньше двух, а если 4044 то уже больше двух. Пока тоже не очень понимаю как это сделать, ваш код сложноватый, как я понимаю можно и попроще написать.
Пока что код такой
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
   { 
       int n,a,m=1;
   setlocale(LC_ALL, "Russian");
 
    Console::WriteLine(L"Введите натуральное число");
    cin>>n;
if(n>=0)   
{
    int j;
for(j=1; j<=n; j++)
 
if(j % 2 == 0) 
m=m*j;
cout<<"Произведение четных чисел="<<m<< endl;
 
Console::WriteLine(L"Введите A");
    cin>>a;
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 22:46 8
freshness, да, все так. Код вроде совсем не сложный. Можно по порядку:
Вводим число n, например, то же 4044. Теперь нужно получить все его цифры. Это делается в цикле:
C++
1
2
3
4
5
6
7
8
while (n) //т.е пока n не будет=0 в результате деления его на 10.
  {
   if((n%10)%2==0) //n%10 - это последняя цифра числа. Ее и проверяем на четность
    prod*=(n%10); //если она четная, то перемножаем.
   if ((n%10)==a) //если эта цифра = введенной A с клавиатуры
    x++; //увеличиваем счетчик
   n/=10; //отсекаем эту цифру от числа и так далее по циклу
  }
1
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 23:09  [ТС] 9
Цитата Сообщение от BumerangSP Посмотреть сообщение
freshness, да, все так. Код вроде совсем не сложный. Можно по порядку:
Вводим число n, например, то же 4044. Теперь нужно получить все его цифры. Это делается в цикле:
C++
1
2
3
4
5
6
7
8
while (n) //т.е пока n не будет=0 в результате деления его на 10.
  {
   if((n%10)%2==0) //n%10 - это последняя цифра числа. Ее и проверяем на четность
    prod*=(n%10); //если она четная, то перемножаем.
   if ((n%10)==a) //если эта цифра = введенной A с клавиатуры
    x++; //увеличиваем счетчик
   n/=10; //отсекаем эту цифру от числа и так далее по циклу
  }
А через for или как то по другому можно сделать ? Если делать продолжение к моему коду. Просто по вашему коду я не понимаю что обозначает (n%10) и if ((n%10)==a) это не понимаю. А вот то что я написал, там я уже понимаю как, что работает, и если продолжение в том стиле буду писать, то мне так легче понять и следующую похожую задачу я уже сам смогу сделать.



Ну с вашим кодов чуть разобрался n%10 тоже немного понял шас попробую как нить сделать
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 23:25 10
n%10 означает остаток при делении n на 10. Остаток при делении 4044 на 10 = 4. При делении, например, 78 на 10 остаток = 8 и т.д.
И в Вашем коде перемножаются не цифры числа, а числа от 1 до n. Вам это нужно?
0
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 23:30  [ТС] 11
В общем как я понял сначала я ввожу натуральное число к примеру 6 программа должна найти произведение четных цифр числа, т.е четными будут 2-4-6. При умножении получается 48. Дальше как я понял вводится A к примеру я ввожу A=4. То в числе 48 число 4 встречается меньше двух раз. Вроде как то так, вот только по моему коду если я пробую большое число ввести у меня произведение 0 равно, значит ошибка какая то.
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
19.09.2012, 23:36 12
freshness, четных цифр числа n, а не чисел до n. Цифры - это от 0 до 9. Например, вводим n=4044 и перебираем его цифры, т.е. 4,0,4 и 4. Перебор идет в цикле. А потом уже смотрим, сколько у него цифр соответствуют введенной цифре A.
1
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 23:57  [ТС] 13
Спасибо, что помогли даже задание правильно понять. Мда. Ладно сейчас буду все переделывать.

Добавлено через 16 минут
Мда, а код все равно не клеется.
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
20.09.2012, 18:03 14
freshness, можно начать по порядку. Что не выходит? Вы в общем (не с точки зрения программирования) понимаете, как нужно решать задачу?
1
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
21.09.2012, 11:02  [ТС] 15
Да именно я не могу понять принцип работы программы, а точнее как в ней выполняется цикл. Например число 4044 как цикл выводит четные цифры данного числа.
Т.е я раньше думал что задача решается по другому и понял как делать, а здесь пока не могу понять.

Добавлено через 1 час 21 минуту
Сейчас например хочу сделать первую часть ввожу число например 4044 и хочу что бы перемножил и вывел в консоли уже результат произведения.

while (n) //т.е пока n не будет=0 в результате деления его на 10.
{
if((n%10)%2==0) //n%10 - это последняя цифра числа. Ее и проверяем на четность - это я понял.
prod*=(n%10); //если она четная, то перемножаем. - умножение у меня как то неправильно происходит.
x++; //увеличиваем счетчик
n/=10; //отсекаем эту цифру от числа и так далее по циклу
}
В консоли выводит полный процесс перемножения и результат не всегда правильный зависит еще от того какое число я ввожу.
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.09.2012, 16:04 16
При каком числе результат неверный?

Например число 4044 как цикл выводит четные цифры данного числа.
сколько будет 4044/10? А на 100? 404.4 и 40.44 соответственно. Т.к. мы выполняем целочисленное деление, то результат выходит целый: 404 и 40. Это что касается:
n/=10; //или по=другому n=n/10;
В результате вскоре n будет = 0, на этом цикл и завершается.
n%10 - это остаток от деления (операция % все равно что mod в паскале (если изучали))
4044%10 = 4, 4044%100 = 44 и т.д. Но нам не нужен остаток более 1 цифры, поэтому мы в конце цикла отсекаем последнюю цифру, чтобы взять следующую.
1
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
21.09.2012, 22:13  [ТС] 17
Использовал ваш первичный код, только немного исправил, единственное произведение надо вывести ,как я понял это переменная prod у вас, и в консоли всегда 0 стоит произведение
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.09.2012, 22:16 18
freshness, а когда объявляли prod, не забыли его сразу же =1 сделать?
1
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
21.09.2012, 22:22  [ТС] 19
Не я для удобства себе сделал не prod а m. int a,n,x=0,m=1; все верно. Ваш основной код я понял что к чему, это очень хорошо, но вот не понимаю почему произведение не выдает. Вот мой код:
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
int main()
   { 
       int a,n,x=0,m=1;
   setlocale(LC_ALL, "Russian");
 
    Console::WriteLine(L"Введите натуральное число");
    cin>>n;
    
Console::WriteLine(L"Введите  число A");
    cin>>a;
 
while (n)
  {
   if((n%10)%2==0)  // Проверяю на четность
    m=m*(n%10);     // Умножаю четные
   if ((n%10)==a)   // Является ли цифрой A
    x++;          // Следующий цикл
   n/=10;           // Отсекается цифра числа.
  }
 
cout<<"Произведение четных цифр цисла:"<<m<< endl;
 (x>2)? cout<<"Более двух раз\n": cout<<"Менее двух раз\n";
 
 Console::ReadKey(false);
   return 0;
   }
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
21.09.2012, 22:38 20
freshness, вот уж не знаю. У меня работает. Да и это у Вас не c++, больше на c# похоже Отладкой пользоваться умеете? Можно посмотреть какие значения принимает m при каждой итерации в цикле. Сам бы проверил, да c# под рукой нет.
1
21.09.2012, 22:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2012, 22:38
Помогаю со студенческими работами здесь

Дано натуральное число. Верно ли, что в данном числе цифра А встречается более двух раз?
Доброго времени суток всем, ребята, помогите пожалуйста нам начали преподавать Visual basic 6.0, ...

Дано натуральное число. Верно ли, что в данном числе цифра А встречается более двух раз?
Доброго времени суток всем. ребята, помогите пожалуйста нам начали преподавать ЯП Haskel, Только...

Найти первую цифру числа и проверить, верно ли, что сумма цифр числа равна X
Дано натуральное число: – найти первую цифру числа; – верно ли, что сумма цифр данного числа...

Дано натуральное число n. Верно ли, что сумма цифр этого числа является нечётной
Дано натуральное число n. Верно ли, что сумма цифр этого числа является нечётной.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru