Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Пример:

1=45

Если кому-то лень решать подскажите хоть алгоритм
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2012, 12:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Имеем число, вычислить суму произведений цифр для всех чисел длиной (C++):

Вычислить сумму произведений всех троек соседних чисел массива - C++
Дан одномерный числовой массив A из n элементов. Вычислить сумму произведений всех троек соседних чисел. Вот на паскале const n=10; ...

Дана последовательность n натуральных чисел. Для каждого числа вычислить количество его цифр и сумму этих цифр. Вывести на экран каждое число, количес - C++
Дана последовательность n натуральных чисел. Для каждого числа вычислить количество его цифр и сумму этих цифр. Вывести на экран каждое...

В заданном числовом массиве вычислить сумму произведений всех троек соседних чисел. - C++
7.9.1. Помогите, пожалуйста, решить задачу в С++. \В заданном числовом массиве вычислить сумму произведений всех троек соседних...

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

Посчитать сумму произведений всех N-значных чисел - C++
Всем добрый день! Есть задание - требуется вычислить сумму произведений цифр каждого N-значного числа. При этом следует учесть, что...

Вычислить суму 4 чисел (верхних и нижних) в масиве - C++
помогите пожалуйста написать программу которая показывает суму читерех чисел в масиве масив заполненый рандомными числа!масив 4 на 4 ...

8
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 12:33 #2
разбиваете число на цифры. Перемножаете получившиеся числа. Что тут сложного то?
Длинное число может быть представленно в виде строки. тогда каждый символ строки - это и есть цифра. Пробегаете по циклу и тупо перемножаете каждый символ строки преобразовываете в цифру и перемножаете.
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 1
15.07.2012, 12:41  [ТС] #3
Цитата Сообщение от DU Посмотреть сообщение
разбиваете число на цифры. Перемножаете получившиеся числа. Что тут сложного то?
Длинное число может быть представленно в виде строки. тогда каждый символ строки - это и есть цифра. Пробегаете по циклу и тупо перемножаете каждый символ строки преобразовываете в цифру и перемножаете.
тип храниея данных можно использовать string ? и как распознать цыфры ?
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 12:45 #4
можно все, что подходит. std::string для этого подходит.
для проверки того, что символ является цифрой есть спец функция
isdigit (http://www.cplusplus.com/reference/std/locale/isdigit/) ну или руками можете проверить, что символ является одним из набора 0123456789.
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 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]
? а потом сложит то что он введет ? Правельно я мыслу
0
DU
1484 / 1130 / 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;
0
Sylar9
-20 / 55 / 2
Регистрация: 04.09.2011
Сообщений: 1,942
Записей в блоге: 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 ?
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 13:27 #8
сейчас int. можно long или long long, но у них тоже есть предел. для очень больших чисел нужно использовать или самому напиать специальные классы для работы с большими целыми числами. но это после того, как выяснится, что результат на самом деле не вмещается в long long.
0
Toshkarik
1143 / 860 / 51
Регистрация: 03.08.2011
Сообщений: 2,390
Завершенные тесты: 1
15.07.2012, 15:26 #9
По условию при N < 1000, получается максимум 999 цифр, если все эти цифры будут девятками, то получается число в 955 знаков. В любом случае нужна длинная арифметика.
0
15.07.2012, 15:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2012, 15:26
Привет! Вот еще темы с ответами:

Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1 до k) - C++
Натуральное число, в котором n цифр, если сумма цифр возведённая в nую степень равна числу то вы вывесте число на экран(интервал чисел от 1...

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

Вычислить общую сумму всех четных цифр во всех нечетных элементах - C++
Помогите пожалуйста! Буду очень благодарен!

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


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

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

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