Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
1

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

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

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

Пример:

1=45

Если кому-то лень решать подскажите хоть алгоритм
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2012, 12:17
Ответы с готовыми решениями:

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

Найти суму суму всех натуральных чисел кратных 13 от 13 до 169
2). Найти суму суму всех натуральных чисел кратных 13 от 13 до 169. Заранее здоровенное спасЫба :)

Вычислить сумму произведений всех пар соседних чисел
Здравствуйте,не могу решить две задачи=(Помогите пожалуйста=) 1)Задан одномерный числовой массив....

Вычислить сумму произведений всех пар соседних чисел
2.Вычислить сумму произведений всех пар соседних чисел.

8
DU
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 12:33 2
разбиваете число на цифры. Перемножаете получившиеся числа. Что тут сложного то?
Длинное число может быть представленно в виде строки. тогда каждый символ строки - это и есть цифра. Пробегаете по циклу и тупо перемножаете каждый символ строки преобразовываете в цифру и перемножаете.
0
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
15.07.2012, 12:41  [ТС] 3
Цитата Сообщение от DU Посмотреть сообщение
разбиваете число на цифры. Перемножаете получившиеся числа. Что тут сложного то?
Длинное число может быть представленно в виде строки. тогда каждый символ строки - это и есть цифра. Пробегаете по циклу и тупо перемножаете каждый символ строки преобразовываете в цифру и перемножаете.
тип храниея данных можно использовать string ? и как распознать цыфры ?
0
DU
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 12:45 4
можно все, что подходит. std::string для этого подходит.
для проверки того, что символ является цифрой есть спец функция
isdigit (http://www.cplusplus.com/refer... e/isdigit/) ну или руками можете проверить, что символ является одним из набора 0123456789.
0
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
15.07.2012, 12:50  [ТС] 5
Цитата Сообщение от DU Посмотреть сообщение
можно все, что подходит. std::string для этого подходит.
для проверки того, что символ является цифрой есть спец функция
isdigit (http://www.cplusplus.com/refer... e/isdigit/) ну или руками можете проверить, что символ является одним из набора 0123456789.
это мне надо содать массив
C++
1
string s[100]
? а потом сложит то что он введет ? Правельно я мыслу
0
DU
1492 / 1138 / 165
Регистрация: 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
136 / 57 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 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
1492 / 1138 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
15.07.2012, 13:27 8
сейчас int. можно long или long long, но у них тоже есть предел. для очень больших чисел нужно использовать или самому напиать специальные классы для работы с большими целыми числами. но это после того, как выяснится, что результат на самом деле не вмещается в long long.
0
1172 / 885 / 94
Регистрация: 03.08.2011
Сообщений: 2,455
15.07.2012, 15:26 9
По условию при N < 1000, получается максимум 999 цифр, если все эти цифры будут девятками, то получается число в 955 знаков. В любом случае нужна длинная арифметика.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2012, 15:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вычислить сумму произведений всех троек соседних чисел
Дан одномерный числовой массив. Вычислить сумму произведений всех троек соседних чисел.

Вычислить сумму всех произведений пар соседних чисел
Вводиться число, и нужно вычислить сумму всех произведений пар соседних чисел.

Вычислить суму 2 чисел, если сума их квадратов целое число
Вычислить сумму S двух целых чисел x и y, если сумма их квадратов является квадратом другого...

Вычислить сумму произведений всех троек соседних чисел массива
Дан одномерный числовой массив A из n элементов. Вычислить сумму произведений всех троек соседних...

Вычислить сумму произведений всех пар соседних чисел - массивы
Вычислить сумму произведений всех пар соседних чисел - задача на одномерный массив ( при написании...

Вычислить сумму произведений всех троек соседних чисел массива
Помогите, пожалуйста с задачей, пожалуйста Задан числовой массив а(n). Вычислить сумму...


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

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

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