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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
#1

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

02.10.2013, 12:52. Просмотров 1765. Ответов 20
Метки нет (Все метки)

Вот есть программа, работает только, для положительной степени. Помогите разобрать что не так? pow не предлагать!

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
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    int x, y, res = 1;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
    cin >> y;
    if (x==0)
    {
        cout << "0" << endl;
    }
    else
    {
        if (x==1) 
        {
            cout << "1" << endl;
        }
        else
        {
            if (y==0) 
            {
                cout << "1" << endl;
            }
            else 
            {
                if (y<0)
                {
                    res = 1/res;
                }
                else 
                {
                    int i=1;
                    do
                    {
                        res=res*x;
                        ++i;
                    }
                    while (i<=y);
                    cout << res << endl;
                }
            }
        }
    }
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 12:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возведение в степень (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.10.2013, 12:58 #2
Цитата Сообщение от AleshaOleg Посмотреть сообщение
res = 1/res;
какой в этом смысл?
0
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 13:01  [ТС] #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
какой в этом смысл?
Что бы работала отрицательная степень. Больше всего у меня не получается в этом блоке:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (y<0)
                {
                    res = 1/res;
                }
                else 
                {
                    int i=1;
                    do
                    {
                        res=res*x;
                        ++i;
                    }
                    while (i<=y);
                    cout << res << endl;
                }
0
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
02.10.2013, 13:06 #4
Цитата Сообщение от AleshaOleg Посмотреть сообщение
Что бы работала отрицательная степень. Больше всего у меня не получается в этом блоке:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (y<0)
                {
                    res = 1/res;
                }
                else 
                {
                    int i=1;
                    do
                    {
                        res=res*x;
                        ++i;
                    }
                    while (i<=y);
                    cout << res << endl;
                }
Добавь инициализацию res=x и цикл для отрицательной степени
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.10.2013, 13:13 #5
Цитата Сообщение от AleshaOleg Посмотреть сообщение
Что бы работала отрицательная степень.
а вот и нет. Неполное частное от деления 1 на х равно 0.

AleshaOleg, тебе необходимы вещественные числа.
C++
1
 double x;
1
econ_ciber
3 / 3 / 0
Регистрация: 29.03.2011
Сообщений: 36
02.10.2013, 14:45 #6
Логично) Инт - целочисленные значения)
тебе double надо.
0
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 15:56  [ТС] #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а вот и нет. Неполное частное от деления 1 на х равно 0.

AleshaOleg, тебе необходимы вещественные числа.
C++
1
 double x;
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
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    double x, y, i, res = x;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
    cin >> y;
    if (x==0)
    {
        cout << "0" << endl;
    }
    else
    {
        if (x==1) 
        {
            cout << "1" << endl;
        }
        else
        {
            if (y==0) 
            {
                cout << "1" << endl;
            }
            else 
            {
                if (y<0)
                {
                    do
                    {
                        res=res*x;
                        ++i;
                        cout << res << endl;
                    }
                    while (i<=y);
                    cout << res << endl;
                }
                else 
                {
                    do
                    {
                        res=res*x;
                        ++i;
                        cout << res << endl;
                    }
                    while (i<=y);
                    res = 1/res;
                    cout << res << endl;
                }
            }
        }
    }
    system("pause");
    return 0;
}
Вот переписал немного. Так, или нет?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.10.2013, 15:59 #8
Не вникал, но здесь
C++
1
2
3
    double x, y, i, res = x;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
res присваивается ещё не введённое значение икс.
0
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 16:01  [ТС] #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Не вникал, но здесь
C++
1
2
3
    double x, y, i, res = x;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
res присваивается ещё не введённое значение икс.
Вот так?

C++
1
2
3
4
5
double x, y, i;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
    cin >> y;
    double res = x;
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.10.2013, 16:02 #10
А сам как считаешь?
0
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 16:03  [ТС] #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А сам как считаешь?
Вот так и считаю. Но это неправильно.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.10.2013, 16:14 #12
что именно неправильно?
0
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 16:25  [ТС] #13
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что именно неправильно?
неправильно, то где я объявляю res=x

Добавлено через 9 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
что именно неправильно?
Вот смотрите, хоть и повторился я. Но, оно уже что то выводит. Выводит постоянно 1.

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
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    double x, y;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
    cin >> y;
    double res = x;
    if (x==0)
    {
        cout << "0" << endl;
    }
    else
    {
        if (x==1) 
        {
            cout << "1" << endl;
        }
        else
        {
            if (y==0) 
            {
                cout << "1" << endl;
            }
            else 
            {
                if (y<0)
                {
                    int i=0;
                    do
                    {
                        res=1/res;
                        res=res*x;
                        ++i;
                    }
                    while (i<y);
                    cout << res << endl;
                }
                else
                {
                    int i=0;
                    do
                    {
                        res=res*x;
                        ++i;
                    }
                    while (i<y);
                    cout << res << endl;
                }
            }
        }
    }
    system("pause");
    return 0;
}
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
02.10.2013, 17:14 #14
Ладно, продолжим.
Цитата Сообщение от AleshaOleg Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (x==0)
* * {
* * * * cout << "0" << endl;
* * }
* * else
* * {
* * * * if (x==1) 
* * * * {
* * * * * * cout << "1" << endl;
* * * * }
* * * * else
* * * * {
* * * * * * if (y==0) 
* * * * * * {
* * * * * * * * cout << "1" << endl;
* * * * * * }
* * * * * * else 
* * * * * * {
Зачем этот адский набор условий? Что степень по-другому посчитается, если их убрать?

Добавлено через 5 минут
Цитата Сообщение от AleshaOleg Посмотреть сообщение
double x, y;
а почему игрек то имеет тип double???
Ну ё-моё! Хоть типы данных повтори.
1
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 17:24  [ТС] #15
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ладно, продолжим.Зачем этот адский набор условий? Что степень по-другому посчитается, если их убрать?

Добавлено через 5 минут

а почему игрек то имеет тип double???
Ну ё-моё! Хоть типы данных повтори.
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 "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    double x; 
    int y;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
    cin >> y;
    double res = x;
    if (y<0)
    {
        int i=0;
        do
        {
            res=1/res;
            res=res*x;
            ++i;
        }
        while (i<y);
        cout << res << endl;
    }
    else
    {
        int i=0;
        do
        {
            res=res*x;
            ++i;
        }
        while (i<y);
        cout << res << endl;
    }
    system("pause");
    return 0;
}
Вот переписал Действительно Зачем столько условий
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2013, 17:24
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.10.2013, 17:24
Ответ Создать тему
Опции темы

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