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

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

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

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

14.06.2014, 12:17. Просмотров 513. Ответов 17
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
int main()
{
    int x = 5;
    x=exp(2*log(x));
    cout << x;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2014, 12:17     Возведение в степень
Посмотрите здесь:

Возведение в степень C++
Возведение в степень C++
C++ Возведение в степень. C++
C++ возведение в степень!
C++ Возведение в степень!
возведение в степень C++
C++ Возведение в степень
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
14.06.2014, 12:25     Возведение в степень #2
Выведи exp(2*log(x)) на экран и поймешь.
RaiaNKnight
96 / 70 / 7
Регистрация: 29.06.2011
Сообщений: 465
Записей в блоге: 1
14.06.2014, 12:29     Возведение в степень #3
C++
1
2
3
4
5
6
7
8
9
10
11
#include <math.h>
#include <stdio.h>
 
using namespace std;
 
int main()
{
    int x = 5;
    printf("%.18lf", exp(2*log(x)));
    return 0;
}
Узреть, понять, просветиться!
EfesXZC
2 / 2 / 1
Регистрация: 07.08.2015
Сообщений: 67
08.08.2015, 16:20     Возведение в степень #4
Необходимо число a возвести в степень n с использованием циклов. Все бы хорошо, но при попытке использовать дробные числа, ответ всегда получается единица. С чем это связано?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    double x, n, xn=1;
 
    cout << "Введите число: ";
    cin >> x;
    cout << "Введите степень:";
    cin >> n;
 
    for (int i; i<n; i++) {
        xn = xn * x;
    }
 
    cout <<"Число "<< x <<" в степени "<< n <<" : "<< xn << endl;
 
    return 0;
}
Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,972
Записей в блоге: 2
Завершенные тесты: 1
08.08.2015, 16:22     Возведение в степень #5
Чему равно i при "старте" цикла?
castaway
08.08.2015, 16:24
  #6

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
Чему равно i при "старте" цикла?
Мне кажется что он тему уже потерял и найти уже не сможет..))

Croessmah
08.08.2015, 16:27
  #7

Не по теме:

castaway, не знаю, у меня она вообще еще в будущем

castaway
08.08.2015, 16:29
  #8

Не по теме:

Croessmah, дата на ПК неправильная?)

Croessmah
Модератор
Эксперт CЭксперт С++
12887 / 7273 / 810
Регистрация: 27.09.2012
Сообщений: 17,972
Записей в блоге: 2
Завершенные тесты: 1
08.08.2015, 16:33     Возведение в степень #9

Не по теме:

castaway, скорее всего часовой пояс не тот у меня выставлен в профиле. Лень смотреть )))



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

Не по теме:

castaway, поправил. Коррекция времени включена была :-)

EfesXZC
2 / 2 / 1
Регистрация: 07.08.2015
Сообщений: 67
08.08.2015, 17:19     Возведение в степень #10
Ну да... Уже исправился )
C++
1
2
3
for (int i=0; i<n; i++) {
        xn = xn * x;
    }
Но проблема не исчезла. Теперь ответ всегда равен введенному числу x.
SerVal
23 / 23 / 2
Регистрация: 16.04.2015
Сообщений: 208
08.08.2015, 17:26     Возведение в степень #11
Цитата Сообщение от EfesXZC Посмотреть сообщение
Но проблема не исчезла. Теперь ответ всегда равен введенному числу x.
Что выводите, то и показывает. Вычисляете xn, а выводите x
Попробуйте вывести xn
Abell
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 32
08.08.2015, 17:36     Возведение в степень #12
SerVal, всё он правильно выводит. Посмотрите внимательнее.

Добавлено через 5 минут
EfesXZC, всё работает верно. Вы уверены, что не ошибаетесь при вводе данных?
Нажмите для просмотра кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main()
{
    double x, n, xn = 1;
    
    cin >> x >> n;
    
    for (int i = 0; i < n; i++)
        xn *= x;
        
    cout << xn << endl;
    
    return 0;
}
EfesXZC
2 / 2 / 1
Регистрация: 07.08.2015
Сообщений: 67
08.08.2015, 17:42     Возведение в степень #13
С целыми числами все правильно работает, но например при попытке возвести 4 в степень 0,5 выводит 4.
Abell
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 32
08.08.2015, 17:48     Возведение в степень #14
EfesXZC, а, так вы говорите не только про натуральную степень?
Цитата Сообщение от EfesXZC Посмотреть сообщение
например при попытке возвести 4 в степень 0,5 выводит 4.
Потому что i после 0, сразу станет 1. Следовательно цикл никогда не сделает xn больше чем x.

Добавлено через 1 минуту
Если не понятно, то вместо вашего компьютера выполните ваш код сами на бумажке при помощи ручки.
EfesXZC
2 / 2 / 1
Регистрация: 07.08.2015
Сообщений: 67
08.08.2015, 18:02     Возведение в степень #15
Цитата Сообщение от Abell Посмотреть сообщение
Потому что i после 0, сразу станет 1. Следовательно цикл никогда не сделает xn больше чем x.
Вот блин. Благодарю за помощь чайнику ) А вообще возможно реализовать возведение в ненатуральную степень с помощью циклов?
Abell
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 32
08.08.2015, 18:10     Возведение в степень #16
EfesXZC, в целую можно. Про действительную в целом не знаю, по крайней мере мне такой способ неизвестен.
MansMI
1134 / 931 / 239
Регистрация: 08.01.2012
Сообщений: 3,362
08.08.2015, 18:27     Возведение в степень #17
именно через циклы? исходя из формулы xy=exp(y*ln(x)) то функции exp и ln раскладываются в ряды Тейлора, циклы обеспечены
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2015, 18:40     Возведение в степень
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Abell
0 / 0 / 0
Регистрация: 08.08.2015
Сообщений: 32
08.08.2015, 18:40     Возведение в степень #18
Останется только выбрать приближение.
Yandex
Объявления
08.08.2015, 18:40     Возведение в степень
Ответ Создать тему
Опции темы

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