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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.62
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 12:52     Возведение в степень #1
Вот есть программа, работает только, для положительной степени. Помогите разобрать что не так? 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2013, 12:52     Возведение в степень
Посмотрите здесь:

Возведение в степень C++
C++ Возведение в степень. C++
C++ возведение в степень!
C++ Возведение в степень!
возведение в степень C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.10.2013, 12:58     Возведение в степень #2
Цитата Сообщение от AleshaOleg Посмотреть сообщение
res = 1/res;
какой в этом смысл?
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;
                }
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
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 и цикл для отрицательной степени
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.10.2013, 13:13     Возведение в степень #5
Цитата Сообщение от AleshaOleg Посмотреть сообщение
Что бы работала отрицательная степень.
а вот и нет. Неполное частное от деления 1 на х равно 0.

AleshaOleg, тебе необходимы вещественные числа.
C++
1
 double x;
econ_ciber
3 / 3 / 0
Регистрация: 29.03.2011
Сообщений: 36
02.10.2013, 14:45     Возведение в степень #6
Логично) Инт - целочисленные значения)
тебе double надо.
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;
}
Вот переписал немного. Так, или нет?
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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 присваивается ещё не введённое значение икс.
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;
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.10.2013, 16:02     Возведение в степень #10
А сам как считаешь?
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 16:03  [ТС]     Возведение в степень #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А сам как считаешь?
Вот так и считаю. Но это неправильно.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.10.2013, 16:14     Возведение в степень #12
что именно неправильно?
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;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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???
Ну ё-моё! Хоть типы данных повтори.
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;
}
Вот переписал Действительно Зачем столько условий
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
02.10.2013, 18:57     Возведение в степень #16
Цитата Сообщение от AleshaOleg Посмотреть сообщение
Вот переписал Действительно Зачем столько условий
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
#include <iostream>
using namespace std;
int main()
{
    double x; 
    int y, i=0;;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
    cin >> y;
    double res = 1;
    if (y<0)
    {
       do
        {
            res*=1/x;
            ++i;
        }
        while (i<(abs(y)));
    }
    else
    {
        do
        {
            res=res*x;
            ++i;
        }
        while (i<y);
    }
    cout << res << endl;
    system("pause");
    return 0;
}
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 19:03  [ТС]     Возведение в степень #17
Цитата Сообщение от newb_programmer Посмотреть сообщение
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
#include <iostream>
using namespace std;
int main()
{
    double x; 
    int y, i=0;;
    cout << "Enter digits x, y:" << endl;
    cin >> x;
    cin >> y;
    double res = 1;
    if (y<0)
    {
       do
        {
            res*=1/x;
            ++i;
        }
        while (i<(abs(y)));
    }
    else
    {
        do
        {
            res=res*x;
            ++i;
        }
        while (i<y);
    }
    cout << res << endl;
    system("pause");
    return 0;
}
не работает ведь.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
02.10.2013, 19:06     Возведение в степень #18
Цитата Сообщение от AleshaOleg Посмотреть сообщение
не работает ведь.
у меня все работает! пишите конкретно что у вас-не компилируется или ошибка вылетает, или некорректные данные (если да то какие вы вводите и что выводит!)
я особо много не тестил...только 2,3 и 2,-3
AleshaOleg
0 / 0 / 0
Регистрация: 28.08.2012
Сообщений: 14
02.10.2013, 19:11  [ТС]     Возведение в степень #19
Цитата Сообщение от newb_programmer Посмотреть сообщение
у меня все работает! пишите конкретно что у вас-не компилируется или ошибка вылетает, или некорректные данные (если да то какие вы вводите и что выводит!)
я особо много не тестил...только 2,3 и 2,-3
fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник. Вот такая ошибка.

Добавлено через 1 минуту
Цитата Сообщение от AleshaOleg Посмотреть сообщение
fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник. Вот такая ошибка.
Добавил #include "StdAfx.h". Теперь ошибка fatal error LNK1168: не удается открыть D:\Программирование\C++\involution\Debug\involution.exe для записи.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2013, 19:12     Возведение в степень
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
02.10.2013, 19:12     Возведение в степень #20
Цитата Сообщение от AleshaOleg Посмотреть сообщение
fatal error C1010: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник. Вот такая ошибка.
я поудалял из вашей программы, у меня с ними не запускалось- верните вот эти строки
C++
1
2
3
#include "stdafx.h"
...
int _tmain(int argc, _TCHAR* argv[])//вместо int main() {
должно помочь, если нет создайте новый проект и скопируйте в него все что находится в
C++
1
2
3
int main(){
...
}
Yandex
Объявления
02.10.2013, 19:12     Возведение в степень
Ответ Создать тему
Опции темы

Текущее время: 21:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru