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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.92
Alex_p
#1

Возведение в степень - C++

23.10.2006, 01:18. Просмотров 5853. Ответов 9
Метки нет (Все метки)

подскажите,пожалуйста, способ реализации (алгоритм)операции возведение в степень числа с показателем более 200.
Результат не должен иметь научной записи типа x.xxxxxe+xxx. Необходимо, чтобы результат был представлен, например, строкой string, которая могла бы содержать более или менее 500 цифровых символов.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2006, 01:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возведение в степень (C++):

Возведение в степень - C++
Почему, когда я пытаюсь возвести в квадрат x с типом int, то получается 24, а когда с типом double, то все хорошо и получается 25? ...

Возведение в степень - C++
напишите программный код для С++ Builder

Возведение в степень - C++
Срочно, помогите записать выражение cos^4(x)

Возведение в степень - C++
Дано число n и его нужно возвести в степень s. Можно ли это как-то сделать не используя циклы. Заранее спасибо...

Возведение в степень - C++
Подскажите оператор для возведения числа в n-ую степень. Зарание спасиба

Возведение a в степень b - C++
Пользователь вводит числа а и b, программа считает "а" в степени "b". Помогите написать код

9
Vizlim
3 / 3 / 0
Регистрация: 24.10.2011
Сообщений: 269
23.10.2006, 12:51 #2
http://www.relib.com/forums/Topic895217-15-1.aspx http://www.relib.com/forums/Topic895217-15-1.aspx -- работа с большими числами...
а о возведение в степень тут была тема и предлагали использовать ряды.
0
Alex_p
24.10.2006, 23:28 #3
нашёл код, реализующий операцию возведение в степень, но на Паскале, с которым я незнаком:
Pascal
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
uses crt;
var
  d,i,j,t,c,x: integer;
  m: array [1..25000] of integer;
begin
  clrscr;
  m[1]:=1;
  writeln('Введите число(2..9)');
  readln(x);
  writeln('Введите степень');
  readln(d);
  for i:=1 to d do
  begin
     for j:=1 to 25000 do
     begin
       if t<>0 then
         m[j]:=m[j]*x+t
       else
         m[j]:=m[j]*x;
      t:=0;
      if m[j]>9 then
      begin
        t:=m[j] div 10;
        m[j]:=m[j] mod 10;
      end;
    end;
  end;
  write(x,' ^ ',d,' = ');
  for i:=d downto 1 do begin
    if m[i]=0 then
      c:=c+1
    else
      break;
  end;
  for i:=d-c downto 1 do write(m[i]);
  readkey;
end.
Может кто-то одинаково хорошо владеет и С и Паскалем, переведите, пожалуйста.
xleo
0 / 0 / 0
Регистрация: 24.10.2006
Сообщений: 5
25.10.2006, 01:09 #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
int d,i,j,t,c,x;
int[25000] m;
void main(){
m[1]=1; 
cout>>('Введите число(2..9)'); cin<<(x); 
cout>>('Введите степень'); cin<<(d); 
for (i=1;i<=d;i++){
   for (j=1;j<=25000;j++){
        if (t!=0) 
          m[j]=m[j]*x+t
        else 
          m[j]=m[j]*x;     
        t=0;     
        if m[j]>9{
          t=m[j]/10;
          m[j]=m[j]%10;
        }   
   }
}
cout>>(x,' ^ ',d,' = '); 
for (i=d;i>=1;i--){
if (m[i]==0){
  c=c+1}   
else 
  break;
}  
for (i=d-c;i>=1;i--)
  cout>>(m[i]);
}
0
John Paramol
25.10.2006, 01:12 #5
Перевод, я думаю, дословный.
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
#include <stdio.h>
#include <conio.h>
#include <mem.h>
int d=0,i=0,j=0,t=0,c=0,x=0;
int m[25000] = { *(int*)memset(m,0,sizeof(m)) };
int main(int argc, char* argv[])
{
  clrscr();
  m[0]=1;
  puts("Enter value (2..9)");
  scanf("%d",&x), fflush(stdin);
  puts("Enter power");
  scanf("%d",&d), fflush(stdin);
  for(i=0; i<d; ++i)
  {
    for(j=0; j<25000; ++j)
    {
      if(t!=0) m[j]=m[j]*x+t;
      else m[j]=m[j]*x;
      t=0;
      if(m[j]>9)
      {
        t=m[j]/10;
        m[j]=m[j]%10;
      }
    }
  }
  printf("%d ^ %d = ",x,d);
  for(i=d-1; i>=0; --i)
  {
    if(m[i]==0) ++c;
    else break;
  }
  for(i=d-c-1; i>=0; --i) printf("%d",m[i]);
  getch();
  return 0;
}
Только сдается мне, считается неправильно. Может я что-то неправильно перевел.
xleo
0 / 0 / 0
Регистрация: 24.10.2006
Сообщений: 5
25.10.2006, 01:26 #6
мда, прошу прощение, я забыл переменные обнулить вначале, вот
0
VladConn
1 / 1 / 2
Регистрация: 17.10.2007
Сообщений: 1,119
25.10.2006, 01:44 #7
...строкой string, которая могла бы содержать более или менее 500 цифровых символов...
То есть ЛЮБОЕ число цифровых символов. Зачем тогда именно 500?
0
John Paramol
25.10.2006, 02:20 #8
мда, прошу прощение, я забыл переменные обнулить вначале, вот
Не хотел говорить, но не только в этом твое упущение
xleo
0 / 0 / 0
Регистрация: 24.10.2006
Сообщений: 5
25.10.2006, 14:12 #9
здоровая критика полезна.

пасибо - согласен
0
Alex_p
28.10.2006, 21:28 #10
Благодарю за отклики и реальную помощь. Код поправил. Считает.
28.10.2006, 21:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2006, 21:28
Привет! Вот еще темы с ответами:

Возведение в степень - C++
Совсем недавно начал изучать C++. Учу по книге. Было задание: Вводишь число Вводишь степень в которую надо возвести это число ...

Возведение в степень! - C++
Возник вопрос - Возможно пока не понятна в чем мысль! Попробую на примере объяснить! Возведение числа 2 в 1000 - ую степень будет...

возведение в степень! - C++
Кто помнит функцию возведения в степень.?? &quot;трам-пам-пам&quot; (a,b) ???? Добавлено через 3 минуты И еще желательно...

Возведение в степень. C++ - C++
можно ли написать программу для возведения в вводимую степень вводимого числа с помощью рекурсивной функции


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

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

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