Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.90
freshness
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 21:38     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #1
Видел похожу здесь на форуме но она на pascale как писать в c++ я не понял.
Дано натуральное число. Найти произведение четных цифр этого числа. Верно ли, что число со-держит данную цифру А более двух раз (А вводить с клавиатуры).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2012, 21:38     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз
Посмотрите здесь:

C++ Дано натуральное число n. Верно ли, что сумма цифр этого числа является чётной
Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N-1, у которых произведение цифр совпадает с произведением цифр данного числа C++
C++ Дано число n. Верно ли, что это число содержит ровно 3 одинаковых цифры
C++ дано натуральное число N. Определить,во сколько раз произведение цифр числа больше суммы цифр.Найти количество чётных цифр в записи числа!!
Pascal -> С++ (определить вторую цифру дробной части частного от деления суммы первой и третьей цифр трехзначного числа на вторую цифру этого числа) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 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;
}
freshness
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 ;
Пока что вот он мне выводит четные числа, но как умножить их даже не представляю
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 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, т.к. если выполняется условие четности, то четное число умножается на эту переменную. И так каждый раз, пока не пройдет весь цикл.
freshness
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;
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
19.09.2012, 22:28     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #6
freshness, выводить нужно m.
freshness
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;
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 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; //отсекаем эту цифру от числа и так далее по циклу
  }
freshness
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 тоже немного понял шас попробую как нить сделать
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
19.09.2012, 23:25     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #10
n%10 означает остаток при делении n на 10. Остаток при делении 4044 на 10 = 4. При делении, например, 78 на 10 остаток = 8 и т.д.
И в Вашем коде перемножаются не цифры числа, а числа от 1 до n. Вам это нужно?
freshness
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 23:30  [ТС]     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #11
В общем как я понял сначала я ввожу натуральное число к примеру 6 программа должна найти произведение четных цифр числа, т.е четными будут 2-4-6. При умножении получается 48. Дальше как я понял вводится A к примеру я ввожу A=4. То в числе 48 число 4 встречается меньше двух раз. Вроде как то так, вот только по моему коду если я пробую большое число ввести у меня произведение 0 равно, значит ошибка какая то.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
19.09.2012, 23:36     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #12
freshness, четных цифр числа n, а не чисел до n. Цифры - это от 0 до 9. Например, вводим n=4044 и перебираем его цифры, т.е. 4,0,4 и 4. Перебор идет в цикле. А потом уже смотрим, сколько у него цифр соответствуют введенной цифре A.
freshness
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 23:57  [ТС]     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #13
Спасибо, что помогли даже задание правильно понять. Мда. Ладно сейчас буду все переделывать.

Добавлено через 16 минут
Мда, а код все равно не клеется.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
20.09.2012, 18:03     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #14
freshness, можно начать по порядку. Что не выходит? Вы в общем (не с точки зрения программирования) понимаете, как нужно решать задачу?
freshness
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; //отсекаем эту цифру от числа и так далее по циклу
}
В консоли выводит полный процесс перемножения и результат не всегда правильный зависит еще от того какое число я ввожу.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 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 цифры, поэтому мы в конце цикла отсекаем последнюю цифру, чтобы взять следующую.
freshness
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
21.09.2012, 22:13  [ТС]     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #17
Использовал ваш первичный код, только немного исправил, единственное произведение надо вывести ,как я понял это переменная prod у вас, и в консоли всегда 0 стоит произведение
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.09.2012, 22:16     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #18
freshness, а когда объявляли prod, не забыли его сразу же =1 сделать?
freshness
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;
   }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 22:38     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз
Еще ссылки по теме:

C++ Задача логические функции (составить функцию, которая определяет верно ли что сумма цифр числа четное число)
C++ Найти числа, встречающиеся более двух раз (исправить вывод)
Найти все трехзначные числа: "Само число и сумма цифр этого числа делятся на одно и то же число P" C++

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

Или воспользуйтесь поиском по форуму:
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.09.2012, 22:38     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз #20
freshness, вот уж не знаю. У меня работает. Да и это у Вас не c++, больше на c# похоже Отладкой пользоваться умеете? Можно посмотреть какие значения принимает m при каждой итерации в цикле. Сам бы проверил, да c# под рукой нет.
Yandex
Объявления
21.09.2012, 22:38     Найти произведение четных цифр этого числа. Верно ли, что число содержит данную цифру А более двух раз
Ответ Создать тему
Опции темы

Текущее время: 02:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru