Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2013, 04:01   #1
marco_33
 
Регистрация: 07.11.2012
Сообщений: 9
По умолчанию Возведение в степень по модулю

Запнулся в коде вот на каком месте:
Есть целые числа a, b, c
a и b вводятся с клавиатуры, С должно вот чему равняться:
C=a-b^{},
то есть на числах. пусть a=28, b=2:
c=28-2^{4}=28-16=12
Подскажите, как в коде это сделать. Спасибо

Последний раз редактировалось marco_33; 06.04.2013 в 04:11.
marco_33 вне форума Ответить с цитированием
Старый 06.04.2013, 09:47   #2
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Код:
c = a - abs(pow(b,pow(b,2)));
может как-то так?
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Старый 06.04.2013, 23:30   #3
marco_33
 
Регистрация: 07.11.2012
Сообщений: 9
По умолчанию

Да нет, вроде. Я проверить и не могу, ошибка "1IntelliSense: more than one instance of overloaded function "pow" matches the argument list"

При возрастании числа "а", число abs(pow(b,pow(b,2))) остается неизменным.
А число "с" должно быть в пределе
b<c<a или равно 0, если b^{}=a

И вы, наверное, неправильно поняли (или я выразился) значение "по модулю", речь идет о СРАВНЕНИИ по модулю. это как 7=2(mod5), только тут речь идет о возведении в максимально ближайшую степень к числу "а".
Плохо я объясняю, но все-таки, помогите, я в отчаянии)

Последний раз редактировалось marco_33; 06.04.2013 в 23:54.
marco_33 вне форума Ответить с цитированием
Старый 07.04.2013, 00:11   #4
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Код:
int a, b, c, i, d = 0,j = 1;
scanf("%d%d",&a,&b);
    for(i = 0;a > abs(pow(b,i));i++)
    {
        if(d < pow(b,i)) 
        {
        d = pow(b,i);
        j = i;
        }
    }
c = a - pow(b,j);
printf("%d",c);
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.

Последний раз редактировалось Че Гевара; 07.04.2013 в 00:17.
Че Гевара вне форума Ответить с цитированием
Старый 07.04.2013, 21:59   #5
marco_33
 
Регистрация: 07.11.2012
Сообщений: 9
По умолчанию

Спасибо. А как исправить ошибку "more than one instance of overloaded function "pow" matches the argument list" ? math.h подключена
marco_33 вне форума Ответить с цитированием
Старый 07.04.2013, 22:33   #6
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Вот так работает, по крайней мере с вашими данными в примере
Цитата:
то есть на числах. пусть a=28, b=2:
c=28-2^{4}=28-16=12
Код:
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
main()
{
int a, b, c, i, d = 0,j = 1;
scanf("%d%d",&a,&b);
    for(i = 0;a > abs(pow(b,i));i++)
    {
        if(d < pow(b,i)) 
        {
        d = pow(b,i);
        j = i;
        }
    }
c = a - pow(b,j);
printf("%d",c);
getch();
}
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Старый 07.04.2013, 22:38   #7
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

Вот этот код вроде работает, по крайней мере с данными, как в вашем примере
Цитата:
то есть на числах. пусть a=28, b=2:
c=28-2^{4}=28-16=12
Код:
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
main()
{
int a, b, c, i, d = 0,j = 1;
scanf("%d%d",&a,&b);
    for(i = 0;a > abs(pow(b,i));i++)
    {
        if(d < pow(b,i)) 
        {
        d = pow(b,i);
        j = i;
        }
    }
c = a - pow(b,j);
printf("%d",c);
getch();
}
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Старый 08.04.2013, 00:38   #8
marco_33
 
Регистрация: 07.11.2012
Сообщений: 9
По умолчанию

Все, дошло
Спасибо большое
marco_33 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
возведение в степень и взятие по модулю Kukurudza Общие вопросы C/C++ 13 22.11.2011 15:22
Возведение в степень Mambakremen Помощь студентам 1 14.11.2010 08:54
возведение в степень ILNARM Паскаль, Turbo Pascal, PascalABC.NET 16 16.10.2009 23:04
возведение в степень Lissisa Помощь студентам 1 21.03.2009 22:34
Возведение в степень Stanislav Общие вопросы Delphi 10 05.12.2007 23:34