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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
Sinys
27 / 27 / 2
Регистрация: 25.12.2008
Сообщений: 185
Завершенные тесты: 1
#1

Огромные степени числа - C++

29.12.2008, 22:23. Просмотров 2066. Ответов 10
Метки нет (Все метки)

Надо чтобы программа вычисляла огромные степени числа (мне надо 2 в 1024), и проверяла будет ли это число идеальным (сума делителей равна числу)
Вот программа для вычисления числа в степени (тоже необходимо проверить):
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
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
void stepen()
{
    int iar[100],otv[100000],a,b,e,d,n,o;
    int c[100000],i,j,l;
        
    otv[0] = iar[0] = 0;
    e = d = 1;
    
    printf("x^y\n");
    printf("a: "); scanf("%d", &a);
    printf("b: "); scanf("%d", &b);
    //Переводим а в массив
    i = 0; n = a;
    while(n>0) {
    o = n%10;
    for(j=i; j>0; j--) iar[j] = iar[j-1];
    iar[0] = o;
    n = n/10;
    i++;
    e = d = i;
    }
    for(j=0; j<i; j++) otv[j] = iar[j];
    //Возведение в степень
    for(n=1; n<b; n++) {
        //Обнуляем резултат
     for(i=0; i<e+d; i++) c[i]=0;
     //Умножение
     for(i=0; i<d; i++) {
     o=0; l=0;
     for(j=e-1; j>=0; j--) {
        c[j+d-i]+=(otv[j]*iar[d-1-i] + o)%10;
         if(c[j+d-i]>9) {l=c[j+d-i]/10; c[j+d-i]=c[j+d-i]%10;}
        o=(otv[j]*iar[d-i-1] + o)/10+l;        
         if(j==0) c[j+d-1-i]+=o;
         l=0;
       }
     }
     //Избавляемся от ведущих нулей
     e=e+d;
     while(c[0]==0) {
     for(j=0; j<e-1; j++) c[j]=c[j+1];
     if(e!=1) e--; else break;
     }
     //Выводим ответ в a[]
     for(i=0; i<e; i++) otv[i] = c[i];
     }
    
    if(b==0) printf("");
    else {
    printf("");
    for(i=0; i<e; i++) printf("%d",otv[i]);
    }
}
Надо переделать в то что требуется в тексте програмы

Добавлено через 5 часов 2 минуты 16 секунд
Изменяю задание... просто добавить функцию суммирования чисел: 1+2+2^2+2^3+...+2^1023=
и подскажите как сравнить ответ полученный этой и функцией возведения в степень.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2008, 22:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Огромные степени числа (C++):

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку - C++
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. ...

Огромные числа - C++
Подскажите как сделать чтобы переменная y могла принимать огромные значения(больше 10-ти символов) И при этом программа должна корректно...

Огромные числа - C++
А есть ли типы переменных для огромных чисел, например для 20, 30 значных ?

Оооочень огромные числа - C++
Требуется написать программу которая вычисляет максимум из трех чисел.Подвох заключается в том ,что числа очень огромные и не входят в...

Даны натуральные числа n, k. Проверить, есть ли в записи числа n (в степени k) цифра m - C++
За основу вот взял этот код: #include&lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { vector&lt;long long&gt;...

Определения степени числа - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { double i, sum; cin &gt;&gt; i; for ( double i=1; i &lt;=sum;...

10
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.12.2008, 22:38 #2
Нет главной функции.
Описанная здесь функция не возводит число в степень, а просто записывает все составные числа в массив. А потом выводит не число, а этот массив поэлементно.
0
Sinys
27 / 27 / 2
Регистрация: 25.12.2008
Сообщений: 185
Завершенные тесты: 1
29.12.2008, 22:42  [ТС] #3
Цитата Сообщение от Vourhey Посмотреть сообщение
Нет главной функции.
Описанная здесь функция не возводит число в степень, а просто записывает все составные числа в массив. А потом выводит не число, а этот массив поэлементно.
да но в результате на экране получаешь число которое будет равно заданному числу в заданной степени...
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.12.2008, 22:43 #4
Нет. Ты просто строку видишь, а не число.
0
Sinys
27 / 27 / 2
Регистрация: 25.12.2008
Сообщений: 185
Завершенные тесты: 1
29.12.2008, 22:46  [ТС] #5
Цитата Сообщение от Vourhey Посмотреть сообщение
Нет. Ты просто строку видишь, а не число.
Ладно, пускай так... это мало что меняет.. Надо суммировать массив на каждом шаге до последнего и добавить 1 к последнему елементу массива....
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.12.2008, 22:52 #6
Помнишь, как ты столбиком в детстве считал? Вот то же самое сейчас реализуй с массивами (складывай по индексам элементов). Опять же, значения ты не получишь, но будешь иметь возможность его вывести на экран.

P. S. или использовать специальную библиотеку для работы с длинными числами.
0
Sinys
27 / 27 / 2
Регистрация: 25.12.2008
Сообщений: 185
Завершенные тесты: 1
29.12.2008, 22:56  [ТС] #7
какую библиотеку?
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.12.2008, 22:58 #8
http://gmplib.org/
к примеру...
блин, погугли в конце-концов. Их же полно всяких разных. Как не у себя дома...
1
Sinys
27 / 27 / 2
Регистрация: 25.12.2008
Сообщений: 185
Завершенные тесты: 1
29.12.2008, 23:04  [ТС] #9
Та блин у меня с этим универом такой триллер... каждый день по 3-4 зачёта я тут сижу не то что уставший.... убитый в хлам мозг ели ворочается..
К Микрософт вижуал 2008 подойдет?
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.12.2008, 23:06 #10
Вот скачай и используй стороннюю либу, чтобы не ворочался. Учти, компилиться без нее на другом компиляторе не будет.
1
Sinys
27 / 27 / 2
Регистрация: 25.12.2008
Сообщений: 185
Завершенные тесты: 1
29.12.2008, 23:41  [ТС] #11
Такс если сработает надо будет написать цикл для введения этого числа в массив (в задании требуется) =)

Добавлено через 27 минут 48 секунд
А как ее установить, из мануала ничерта не понял
0
29.12.2008, 23:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2008, 23:41
Привет! Вот еще темы с ответами:

Найти показатель степени числа - C++
Есть число 0.0045 представляем его в виде 4.5*10^(-3). Мне нужно сохранить -3. Или допустим 425 тогда 4.25*10^(2). Вопрос нету встроенной...

Корень седьмой степени из числа? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; void main ( ) { float a,b,y; ...

Нахождение степени числа (pow) - C++
Помогите пожалуйста написать программу. Я так понял тут нужно использовать функцию Pow и возводить основание (-3 в данном случае), в разные...

Алгоритм по вычислению числа в степени n - C++
int main() { setlocale(0,&quot;&quot;); int k; double n,x,y,z; double eps = 1.0e-10; while (true) { cout &lt;&lt; &quot;Введите...


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

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

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