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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.78
BOT
44 / 0 / 0
Регистрация: 26.10.2011
Сообщений: 115
#1

Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N-1, у которых произведение цифр совпадает с произведением цифр данного числа - C++

09.03.2012, 12:03. Просмотров 3177. Ответов 7
Метки нет (Все метки)

Помогите, пожалуйста!!! А то у меня не получается( Написал программу, когда ввожу число 32 как в примере выводит только 16, а 6 и 23 не выводит(( Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N–1, у которых произведение всех цифр совпадает с произведением цифр данного числа. Если таких чисел нет, то вывести слово «нет». Пример. N = 32. Числа: 6, 16, 23.

Вот сама программа!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
int main()
 
{
    int n = 0;
        int i;
        cout << "Enter number: ";
        cin >> i;
            for (int m = 2; m <= i; m += 2)
        n++;
    cout << "number of even numbers = " << n << endl;
    cin.get ();
        cin.get ();
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2012, 12:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N-1, у которых произведение цифр совпадает с произведением цифр данного числа (C++):

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

Циклические вычислительные процессы (Дано натуральное число N. Вывести на экран все шестизначные числа, сумма цифр которых равна N) - C++
Задача предполагает использование целочисленной арифметики и должна быть реализована во втором проекте. Дано натуральное число N. Вывести...

Дано натуральное число найти произведение нечетных цифр числа - C++
Дано натуральное число (более четырех знаков): – найти произведение нечетных цифр числа; – верно ли, что в числе нет цифр, кратных 3?

Дано двузначное натуральное число m. Получить все двузначные натуральные числа, сумма квадратов цифр которых р - C++
Дано двузначное натуральное число m. Получить все двузначные натуральные числа, сумма квадратов цифр которых равна m (например, если m=13,...

Найти числа из интервала от 1 до N-1, для которых произведение всех цифр совпадает с суммой - C++
Есть условие задачи: Дано натуральное двухзначные число N. Найти и вывести все числа из интервала от 1 до N-1, для которых произведение...

В указанном диапазоне найти все числа, произведение цифр которых по модулю дает заданное число - C++
Пользователь вводит х, a, b. Из промежутка от a до b найти все числа, произведение цифр которых по модулю дает х.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Байт
Эксперт C
15995 / 10263 / 1537
Регистрация: 24.12.2010
Сообщений: 19,354
09.03.2012, 12:55 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int pc(int k)
{ int i, p;
  for(i=0, p=1; k>0; i++) {
     p *= (k%10);
     k /= 10;
  }  
  return p;
}
main()
{ int N, pN,px, i, is;
  cout<<'Введите N";
  cin >> N;
  pN = pc(N); 
  for(i=1, is=0; i<N; i++) 
    if (pc(i)==pN) {
      cout << i;
      is = 1;
    }
   if (is==0) cout<< "Нет";
}
Добавлено через 2 минуты
px - не нужен. Обошелся без него
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
09.03.2012, 12:56 #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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <cstdlib>
#include <iostream>
using namespace std;
 
int mult(int n);
 
int main()
{
    setlocale(LC_ALL, "");
    int number;
    
    cout << "Введите натуральное число: " << endl;
    cin >> number;
 
    bool find = false;
    for (int i = 1; i < number; i++)
    {
        if (mult(i) == mult(number))
        {
            find = true;
            cout << i << endl;
        }
 
    }
 
    if(!find)
    {
        cout << "Такие числа не найдены!" << endl;
    }
 
    return EXIT_SUCCESS;
}
 
int mult(int n)
{
    int temp = 1;
    while (int i = n % 10)
    {
        temp *= i;
        n /= 10;
    }
 
    return temp;
}
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
23.04.2012, 20:50 #4
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include<iostream>
 
int main(void)
{
    setlocale(LC_ALL,"Russian_Russia.1251");
 
int inum;//вводимое число
 
   while(true)//продолжать цикл пока пользователь не введет безошибочные данные
   {
    std::cout<<"Введите число :";
    std::cin.unsetf(std::ios::skipws);//неигнорировать пробелы
    std::cin>>inum;
 
    if(std::cin.good())//если ошибок нет
    {
        std::cin.ignore(100,'\n');//удалить лишние символы из потока
        break;
    }
    std::cin.clear();//сброс потока
    std::cin.ignore(100,'\n');//удалить лишние символы
    std::cerr<<"Ошибка. Недопустимое значение!"<<std::endl;
   }
 
   int** mas=new int*[inum];//создать массив нужного размера
   for(int i=0;i<inum;i++)//выделение память под каждый элемент
    {
        *(mas+i)=new int;
        **(mas+i) = i+1;  //инициализация массива значениями от 1 до inum
   }
 
   char* chnum = new char [100]; //для хранения числа ввиде строки
   itoa(inum,chnum,10) ; //преобразовать число в массив символов
   int ires=1; //для хранения числа эталона например 32 = 3*2 = 6;
  
   //формирование числа эталона
   for(int i=0;i<strlen(chnum);i++)
   {
       char tempmas[2];//времменный массив для обмена
       tempmas[0]=chnum[i];
       tempmas[1]='\0';
       ires *= atoi(tempmas);
   }
   for(int i=0;i<inum;i++)//поиск элементов массива отвечающих условию задачи
   {
       for(int j=0;j<inum;j++)
       {
           if(*(mas[i])* *(mas[j]) == ires)
            {
                std::cout<<*(mas[i])<<'*'<<*(mas[j])<<" = "<<ires<<std::endl;
            }
 
       }
   }
   std::cout<<std::endl;
    delete []chnum;                                                                                         
   delete []mas;
 
    system("pause");
return 0;
}
Вот как то так
BOT
44 / 0 / 0
Регистрация: 26.10.2011
Сообщений: 115
23.04.2012, 20:58  [ТС] #5
Спасибо большое!!! Но мы ещё с массивами не работали. А нельзя ли как это с помощью циклов сделать?)) Просто меня препод не поймет) У меня просто не получается эту программу доработать, только одно значение вылазит(
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
23.04.2012, 21:14 #6
Я не знаю, может и можно нужнен математический алгоритм, карказ!
programmer_11
94 / 69 / 5
Регистрация: 08.10.2011
Сообщений: 130
23.04.2012, 21:35 #7
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
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream.h>
typedef unsigned long int ULONG;
typedef unsigned short int USHORT;
 
ULONG getP(USHORT t);
 
int main()
{
USHORT n,t;
cout << "Enter n ";
cin >> n;
cout << "\nEnter t";
cin >> t;
cout << endl;
if (n>1)
{
for (USHORT i=1;i<=n-1;i++)
{
if (getP(i)==getP(t))
cout << i << " ";
}
}
else
{
cout << "OSHIBKA!";
}
return 0;
}
 
ULONG getP(USHORT t)
{
ULONG p=1;
while(t<>0)
{
p*=t%10;
t=t/10;
}
return p;
}
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
26.04.2012, 18:40 #8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
unsigned natur_product(unsigned n) {
    return ( n ) ? n % 10 * natur_product(n / 10) : 1;
}
 
int main(void) {
    unsigned n;
    
    while ( printf("Number: ") && scanf("%u", &n) == 1 && n > 1 ) {
        unsigned i, cnt = 0, np = natur_product(n);
        for ( i = 1; i < n; ++i )
            if ( natur_product(i) == np && ++cnt )
                printf("%u\n", i);
        if ( ! cnt )
            printf("Nicht!\n");
        printf("\n");
    }
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2012, 18:40
Привет! Вот еще темы с ответами:

Дано натуральное число n. Нужно найти сумму цифр числа - C++
Дано натуральное число n. Нужно найти сумму цифр числа; - найти первую цифру числа; - изменить порядок цифр числа на обратный; -...

Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27 - C++
найти все четырёхзначные числа , у которых сумма крайних цифр равна сумме средних цифр , а само число делится на 6 и 27 . В С++

Дано натуральное число N. Найти наименьшее число М (N< M< 2N), которое делится на сумму цифр числа N (без оста - C++
Дано натуральное число N. Найти наименьшее число М (N&lt; M&lt; 2N), которое делится на сумму цифр числа N (без остатка). Если такого числа...

Ввести натуральное число n. Среди чисел 1,.,n найти все такие числа, запись которых совпадает с последними цифрами - C++
Ввести натуральное число n. Среди чисел 1,...,n найти все такие числа, запись которых совпадает с последними цифрами записи их квадрата...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.04.2012, 18:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru