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

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

Войти
Регистрация
Восстановить пароль
 
kosean97
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 5
#1

Программа возвода числа в степень - C++

20.08.2012, 12:56. Просмотров 1069. Ответов 10
Метки нет (Все метки)

Здравствуйте.
Помогите мне пожалуйста придать человеческий вид этой программе.
Мне кажется она какая то.. неаккуратная что ли..
Так же мне хотелось чтоб она работала с дробной степенью. Я даже функцию для этого написал.
Не судите меня строго, это одна из первых моих программ.
Заранее спасибо

Вот сама программа:
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
#include <stdio.h>
 
int kva( int, int );
double okva( int, int );
 
int main( int argc, char *argv[] ) {
 
    int base, n, k;
    double res;
    
    do {
        printf("Введите число: ");
        scanf("%d", &base);
        printf("Введите степень: ");
        scanf("%d", &n);
    
        if( n>0 ) res=kva(base, n);
        else if(n==0) res=1.0;
        else if(n<0) res=okva(base, n);
        
        printf("Ответ: %.3lf\n", res);
        printf("Повторим? (1/0): ");
        scanf("%d", &k);
    } while( k==1 );
    
    printf("Окда");
    
    return 0;
}
 
int kva( int base, int n) {
 
    int i, p;
    
    p=1;
 
    for( i=0; i<n; i+=1 ) p=p*base;
    
    return p;
}
 
double okva( int base, int n) {
 
    int i;
    double p;
    
    p=1.0;
 
    for( i=0; n<i; n+=1 ) p=p/base;
    
    return p;
}
А вот функция
C++
1
2
3
4
5
6
7
8
9
10
11
12
double dkva( int base, int n1, int n2 ) {
    
    int i;
    double p;
    
    p=1.0;
    
    for( i=0; i<n1; i+=1 ) p=p*base;
    for( i=0; n2<i; n2-=1) p=p/base;
    
    return p;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2012, 12:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа возвода числа в степень (C++):

Программа для возведения числа в степень - C++
Здравствуйте. Преподаватель остался недовольным, из-за того, что я это реализовал через готовый оператор, а надо через цикл(а как это...

Программа возведения комплексного числа в вещественную степень !!! - C++
Программа возведения комплексного числа в вещественную степень : (a+Bi) в степени c (по формуле Муавра) Ввод вещественных значений...

Пользователь вводит число,программа вычисляет 3-ию степень введенного числа - C++
Пользователь вводит число,программа вычисляет 3-ию степень введенного числа.

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

Возведение числа в степень и проверка числа на четность - C++
Добрый вечер что то вообще не понял эту тему помогите пожалуйста С помощью директивы #define написать следующие макросы: a) возведение...

программа возведения в степень - C++
Друзья, я &quot;начинающий&quot; в СИ и поэтому столкнулся с такой проблемой: мой компилятор &quot;Miracle C&quot; Неправильно выполняет код, взятый из...

10
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
20.08.2012, 14:32 #2
А чем вам функция pow() не угодила? http://www.cplusplus.com/reference/clibrary/cmath/pow/
0
kosean97
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 5
20.08.2012, 14:38  [ТС] #3
Я хотел сам написать ее, для тренировки, только и всего
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.08.2012, 14:39 #4
Цитата Сообщение от kosean97 Посмотреть сообщение
Здравствуйте.
Помогите мне пожалуйста придать человеческий вид этой программе.
Мне кажется она какая то.. неаккуратная что ли..
Так же мне хотелось чтоб она работала с дробной степенью. Я даже функцию для этого написал.
Не судите меня строго, это одна из первых моих программ.
Заранее спасибо
- держи аккуратно и для любой степени
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
#include <cmath>
#include <iostream>
using namespace std;
 
double sqr(double val, double pwr)
{
    return exp(pwr*log(val));
}
 
int main()
{
    double a, n;
    int iContinue = 1;
    while(iContinue == 1)
    {
        cout<<"Calculation a^n\n";
        cout<<"a = ";cin>>a;
        cout<<"n = ";cin>>n;
        cout<<"a^n = "<<sqr(a, n)<<endl;
        cout<<"Enter 1 for continue\n";
        cin>>iContinue;
    }
    return 0;
}
1
Миниатюры
Программа возвода числа в степень  
kosean97
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 5
20.08.2012, 14:45  [ТС] #5
Спасибо, осталось теперь немножко в этом разобраться)
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.08.2012, 15:02 #6
Цитата Сообщение от kosean97 Посмотреть сообщение
Спасибо, осталось теперь немножко в этом разобраться)
http://www.cyberforum.ru/cgi-bin/latex.cgi?b = {a}^{n} \Rightarrow ln(b) = n*ln(a)
http://www.cyberforum.ru/cgi-bin/latex.cgi?b = {e}^{ln(b)} \Rightarrow b = {e}^{n*ln(a)}
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
20.08.2012, 15:03 #7

Не по теме:

Возведения же.


А что там разбиратся? Используется тождество http://www.cyberforum.ru/cgi-bin/latex.cgi?a^x = e^{x\ln a} (для http://www.cyberforum.ru/cgi-bin/latex.cgi?a \leq 0 не работает). Ну, точнее, работает, но сишная матбиблиотека не умеет комплекснозначные функции.
0
Blutonium
4 / 4 / 0
Регистрация: 29.05.2012
Сообщений: 275
20.08.2012, 17:18 #8
kosean97, в какой среде вы пишите?
0
kosean97
0 / 0 / 0
Регистрация: 20.08.2012
Сообщений: 5
20.08.2012, 21:31  [ТС] #9
В основном с планшета работаю - DroidEdit (компилирую через C4Droid), а так Dev C++, а что?
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
20.08.2012, 22:05 #10
Если показатель степени - неотрицательный, то можно так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int pow(int number, unsigned deg) {
   int p = number, result = 1;
   bool state = true;
   while (state) {
      if (deg & 1) {
         result *= p;
      }
      deg >>= 1;
      -deg & (~deg) ? p *= p : state = false;
   }
   return result;
}
 
int main() {
   std::cout << pow(2, 8) << std::endl;
}
http://liveworkspace.org/code/616d08a8ce2a3fae600e4e4aed9a13c4
0
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
20.08.2012, 23:13 #11
Вот Вам для разнообразия бинарное возведение степени (О(log n)).программа оптимизирована - операции деления заменены битовыми.Думаю разберетесь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int binpow(int a,int n)
{
     int res=1;
     while(n)
      {
           if(n & 1)
                 res *=a;
            a *=a;
            n>>=1;
      }
      return res;
}
С дробной стпенью не раюотает.
0
20.08.2012, 23:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2012, 23:13
Привет! Вот еще темы с ответами:

Программа не правильно возводит в степень - C++
Есть задача, перевернуть число. Программа работает, но вместо последней цифры выдаёт 2 совершенно других числа, например: 654 выдаёт 4559 ...

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

Степень числа - C++
Народ нужна небольшая помощь)) Не могу придумать как записать в коде степени икса: x^2,x^3 ,x^6, x^7,x^10, точнее,чтобы это все выглядило в...

Возведение числа в степень - C++
Помогите написать программу, возводящщую число M в степень N (-10&lt;M&lt;10, 0&lt;N&lt;10 - проверить выполнение данных условий)


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

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

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