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

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

Войти
Регистрация
Восстановить пароль
 
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,915
Записей в блоге: 1
#1

Имеем число, вычислить суму произведений цифр для всех чисел длиной - C++

15.07.2012, 12:17. Просмотров 545. Ответов 8
Метки нет (Все метки)

Не могу как досчитать
Имеем число N(количество цифр), вычислить суму произведений цифр для всех чисел длиной N. N<1000

Пример:

1=45

Если кому-то лень решать подскажите хоть алгоритм
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2012, 12:17     Имеем число, вычислить суму произведений цифр для всех чисел длиной
Посмотрите здесь:
Вычислить сумму произведений всех троек соседних чисел массива C++
C++ В заданном числовом массиве вычислить сумму произведений всех троек соседних чисел.
C++ Посчитать сумму произведений всех N-значных чисел
Вычислить суму 4 чисел (верхних и нижних) в масиве C++
C++ Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1 до k)
C++ Дано двумерный массив целых чисел. Найти сумму произведений всех строк
C++ Вычислить общую сумму всех четных цифр во всех нечетных элементах
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 12:33     Имеем число, вычислить суму произведений цифр для всех чисел длиной #2
разбиваете число на цифры. Перемножаете получившиеся числа. Что тут сложного то?
Длинное число может быть представленно в виде строки. тогда каждый символ строки - это и есть цифра. Пробегаете по циклу и тупо перемножаете каждый символ строки преобразовываете в цифру и перемножаете.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,915
Записей в блоге: 1
15.07.2012, 12:41  [ТС]     Имеем число, вычислить суму произведений цифр для всех чисел длиной #3
Цитата Сообщение от DU Посмотреть сообщение
разбиваете число на цифры. Перемножаете получившиеся числа. Что тут сложного то?
Длинное число может быть представленно в виде строки. тогда каждый символ строки - это и есть цифра. Пробегаете по циклу и тупо перемножаете каждый символ строки преобразовываете в цифру и перемножаете.
тип храниея данных можно использовать string ? и как распознать цыфры ?
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 12:45     Имеем число, вычислить суму произведений цифр для всех чисел длиной #4
можно все, что подходит. std::string для этого подходит.
для проверки того, что символ является цифрой есть спец функция
isdigit (http://www.cplusplus.com/reference/std/locale/isdigit/) ну или руками можете проверить, что символ является одним из набора 0123456789.
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,915
Записей в блоге: 1
15.07.2012, 12:50  [ТС]     Имеем число, вычислить суму произведений цифр для всех чисел длиной #5
Цитата Сообщение от DU Посмотреть сообщение
можно все, что подходит. std::string для этого подходит.
для проверки того, что символ является цифрой есть спец функция
isdigit (http://www.cplusplus.com/reference/std/locale/isdigit/) ну или руками можете проверить, что символ является одним из набора 0123456789.
это мне надо содать массив
C++
1
string s[100]
? а потом сложит то что он введет ? Правельно я мыслу
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 13:00     Имеем число, вычислить суму произведений цифр для всех чисел длиной #6
нет. не правильно. вот как-то так надо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
const std::string str = "1234325235322342665736453443";
result = 1;
for (int i = 0; i < str.length(); ++i)
{
  const char ch = str[i];
  if (isdigit(ch))
  {
     const int number = ch - '0';
     result *= number; // тут нужно нужно помнить о том, что результат умножения может
                              //  превосходить максимальное число, которое могут хранить переменные типа int
  }
}
std::cout << "result = " << result << std::endl;
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,915
Записей в блоге: 1
15.07.2012, 13:23  [ТС]     Имеем число, вычислить суму произведений цифр для всех чисел длиной #7
Цитата Сообщение от DU Посмотреть сообщение
нет. не правильно. вот как-то так надо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
const std::string str = "1234325235322342665736453443";
result = 1;
for (int i = 0; i < str.length(); ++i)
{
  const char ch = str[i];
  if (isdigit(ch))
  {
     const int number = ch - '0';
     result *= number; // тут нужно нужно помнить о том, что результат умножения может
                              //  превосходить максимальное число, которое могут хранить переменные типа int
  }
}
std::cout << "result = " << result << std::endl;
Вот я написал код:
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
#include <iostream>
#include <locale.h>
#include <string>
using namespace std;
int main()
{
    setlocale(LC_ALL,"Rus");
    string N;
    cout << "Введите цифры" << endl;
    cin >> N;
    int result = 1;
    for (int i = 0; i < N.length(); ++i)
    {
        const char ch = N[i];
        if (isdigit(ch))
        {
            const int number = ch - '0';
            result *= number; // тут нужно нужно помнить о том, что результат умножения может превосходить максимальное число, которое могут хранить переменные типа int
        }
    }
cout << "result = " << result << endl;
 
 
 
 
    system("pause");
    return 0;
}
Добавлено через 17 минут
Неверно Переполнения int не должно быть, да и самого int так же

Добавлено через 1 минуту
Цитата Сообщение от DU Посмотреть сообщение
нет. не правильно. вот как-то так надо:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
const std::string str = "1234325235322342665736453443";
result = 1;
for (int i = 0; i < str.length(); ++i)
{
  const char ch = str[i];
  if (isdigit(ch))
  {
     const int number = ch - '0';
     result *= number; // тут нужно нужно помнить о том, что результат умножения может
                              //  превосходить максимальное число, которое могут хранить переменные типа int
  }
}
std::cout << "result = " << result << std::endl;
какой тип переменой для переменой result ?
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 13:27     Имеем число, вычислить суму произведений цифр для всех чисел длиной #8
сейчас int. можно long или long long, но у них тоже есть предел. для очень больших чисел нужно использовать или самому напиать специальные классы для работы с большими целыми числами. но это после того, как выяснится, что результат на самом деле не вмещается в long long.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2012, 15:26     Имеем число, вычислить суму произведений цифр для всех чисел длиной
Еще ссылки по теме:
C++ Дано натуральное число. Найти число, получаемое удалением из исходного всех цифр a
C++ Вычислить и напечатать факториал для всех нат. чисел до n
Записать в файл то простое число, которое есть общим для всех чисел C++
C++ Вычислить число положительных целых, меньших n, таких, что их сумма цифр равна сумме цифр в n

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

Или воспользуйтесь поиском по форуму:
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
15.07.2012, 15:26     Имеем число, вычислить суму произведений цифр для всех чисел длиной #9
По условию при N < 1000, получается максимум 999 цифр, если все эти цифры будут девятками, то получается число в 955 знаков. В любом случае нужна длинная арифметика.
Yandex
Объявления
15.07.2012, 15:26     Имеем число, вычислить суму произведений цифр для всех чисел длиной
Ответ Создать тему
Опции темы

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