Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788

Зменить возведение в степень умножением

09.11.2015, 07:26. Показов 3680. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветьте, помогите решить эту задачу одним циклом for, не юзая pow. Есть int N, есть double x; Нужно найти x^n^2/2^n;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.11.2015, 07:26
Ответы с готовыми решениями:

Рекурсия: возведение числа в степень умножением
Здравствуйте. Хочу попросить вас о помощи, так как я только начинаю изучать язык программирования с++ Задание таке: Написать...

Вычислить 10-ю степень двойки сложением, умножением и просто возведением в степень.
Написать код на С++ или С# или на Java Вычислить 10-ю степень двойки 1 - сложением, умножением и просто возведением в степень.

Вычислить сумму чисел от 1 до N, возведенных в степень M. Возведение в степень оформить как многократное умножение
Не знаю как это написать.. или объясните пожалуйста или помогите сделать)

15
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.11.2015, 08:31
Aymurat, ты разве не знаешь, что x^n = x*x....*x (n раз)? Вот тебе и цикл.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2015, 08:39
Цитата Сообщение от Tulosba Посмотреть сообщение
ты разве не знаешь
Однако, если n велико, интереснее возводить в степень рекурсией, деля n пополам
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
09.11.2015, 08:47  [ТС]
Если бы смог - не писал бы сюда) Я бы использовал больше циклов, жаль нельзя. А у меня варианты с несколько циклами.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2015, 08:51
Цитата Сообщение от Aymurat Посмотреть сообщение
А у меня варианты
Покажи.
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
09.11.2015, 09:26  [ТС]
Вижу ошибки, щас исправлю
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2015, 09:28
Цитата Сообщение от Aymurat Посмотреть сообщение
Вот только я не знаю как через prinf выводить вещественное,
C++
1
printf("%f\n", result);
Еще бы я посоветовал
C++
1
double result;
И 2n немножко не так. Строчка 15
C++
1
dva *= 2;
И проверь, что у тебя получается на малых n и x
0
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
09.11.2015, 09:28  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <math.h>
int main()
{
  int n,save,dvasave; 
  int dva=2;
  double result;
  printf("N="); scanf("%i",&n);
  double x;
  printf("x="); scanf("%d",&x);
  int i;
  dvasave=dva;
  save=x;
    for (i=0; i<n; i++)
    {
        x=x*save;
        dva=dvasave*dva;
    }
    result=(x*x)/dva;
    printf("%f",result);
    return 0;
}
Все пришло к этому... при выводе показывает 0..
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2015, 09:32
Лучший ответ Сообщение было отмечено Aymurat как решение

Решение

Цитата Сообщение от Aymurat Посмотреть сообщение
double x;
* printf("x="); scanf("%d",&x);
У тебя double x. А вводишь его как целое (%d)
Надо
C++
1
scanf("%f",&x);
Добавлено через 1 минуту
И хорошо бы распечатывать то, что ввел
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.11.2015, 10:50
Лучший ответ Сообщение было отмечено Aymurat как решение

Решение

Байт, для double надо "%lf"
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2015, 12:30
Цитата Сообщение от Tulosba Посмотреть сообщение
Байт, для double надо "%lf"
Вы знаете, меня это всегда смущало. Всю жизнь выводил double через "%f", и все было хорошо, точность не терялась. По умолчанию 6 знаков после точки, но, естественно, форматами можно задать и другую. И вот на форуме постоянно встречаю "%lf". Интересно, в чем дело.
Для справки. Самый молодой мой компилятор mingw32 - gcc 3.7.5 2008 года рождения. Может быть дело в этом.
ЗЫ. "%f", float тоже прекрасно выводит. Правда, последние цифры не верны, но это для float естественно.
ЗЗЫ. Может быть здесь механизм похожий на спецификатор "%d", который прекрасно выводит и int, и short, и char?

Добавлено через 3 минуты
Может быть это существенно только для scanf (которым я никогда не пользовался) ?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.11.2015, 12:43
Цитата Сообщение от Байт Посмотреть сообщение
существенно только для scanf (которым я никогда не пользовался) ?
Да. Т.к. при выводе (printf) значение всё равно продвигается до double, а вот для чтения (scanf) это критично.
1
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
09.11.2015, 12:57  [ТС]
Ребята. Мой код правилен? Гляньте плиз.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <math.h>
int main()
{
  int n,save,dvasave; 
  int dva=2;
  double result;
  printf("N="); scanf("%i",&n);
  double x;
  printf("x="); scanf("%lf",&x);
  int i;
  dvasave=dva;
  save=x;
    for (i=0; i<=n; i++)
    {
        x *=save;
        dva *=2;
    }
    result=(x*x)/dva;
    printf("%lf\n",result);
    return 0;
}
Ошибок нет, но вот когда проверяю... Допустим, x=2; n=3; должно быть 64, а выходит 16. Но если брать 2 и 2, выходит правильно, 4.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2015, 13:21
Лучший ответ Сообщение было отмечено Aymurat как решение

Решение

Цитата Сообщение от Aymurat Посмотреть сообщение
Нужно найти x^n^2/2^n;
Давайте уточним формулу. xn2/2n это равно x(n2)/2n = 64 (x=2, n=3) Так?
Тогда у тебя математически не правильный код. Если к вечеру не разберешься, посмотрим.
На всякий случай n2 = (n-1)2 +2n -1

Добавлено через 11 минут
Aymurat, Вот еще посмотрел. Не вижу естественного способа сделать через один for. Можно сделать рекурсией, красиво и вообще без циклов. Но это, видимо, не подойдет...

Добавлено через 5 минут
Еще посмотрел. Вот такой код.
C++
1
2
3
4
5
double res = 1;
for(i=0; i<n*n; i++) {
 res *= x;
 if (i < n) res /= 2;
}
1
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
09.11.2015, 14:15  [ТС]
Я бы до такого не додумался) Все работает, благодарю
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2015, 14:48
Цитата Сообщение от Aymurat Посмотреть сообщение
Я бы до такого не додумался)
Там вся фишка в 4-й строчке...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2015, 14:48
Помогаю со студенческими работами здесь

Возведение в степень
Возвести дробь введенную с клавиатуры а 0, +, - степень

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

возведение в степень
помогите плиз! в файле есть задачка. нужно рекурсивно возвести в степень. Код: #include &lt;iostream&gt; float stepen(float a, int n) ...

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru