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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 14:01   #1
mkerimkulov
Пользователь
 
Регистрация: 28.09.2012
Сообщений: 12
По умолчанию не работает pow(x,y)

Снова всем привет!
в моей задаче нужно из числа вычеркнуть первую цифру и приписать в конце. если мы пишем 1234, то должны получить 2341.


вот код:

#include <stdio.h>
#include <iostream>
#include <math.h>

class zad
{
public:
int a,i,b,c,otv;
void rew()
{c=a;
for (i;a>0; i++)
{
a=a/10;
}

b=c/pow(10,i-1);
a=c%pow(10,i-1);
otv=a*10+b;

}
};


int main()
{
zad u1;
u1.a=123456;
u1.i=0;
u1.b=0;
u1.c=0;
u1.otv=0;
u1.rew();
}



здесь не работает b=c/pow(10,i-1); почему?

и еще вопрос: можно ли не писать эти строки:
u1.i=0;
u1.b=0;
u1.c=0;
u1.otv=0;

по умолчанию данные переменные не принимают значение 0?

спасибо!!!
mkerimkulov вне форума Ответить с цитированием
Старый 13.10.2012, 14:03   #2
mkerimkulov
Пользователь
 
Регистрация: 28.09.2012
Сообщений: 12
По умолчанию

вот что выдает
t.cpp: In member function 'void zad::rew()':
Line 16: error: call of overloaded 'pow(int, int)' is ambiguous
compilation terminated due to -Wfatal-errors.
mkerimkulov вне форума Ответить с цитированием
Старый 13.10.2012, 14:08   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

В С++ математические функции могут быть и float и double а у вас аргументы int, вот компилятор и не знает какую функцию звать. Приведитее аргументы к одному из двух типов.
waleri вне форума Ответить с цитированием
Старый 13.10.2012, 14:20   #4
mkerimkulov
Пользователь
 
Регистрация: 28.09.2012
Сообщений: 12
По умолчанию

Waleri,
Я видимо Вас не понял
мне эти переменные нужно объявить как float или double?
mkerimkulov вне форума Ответить с цитированием
Старый 13.10.2012, 15:29   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Аргументы pow должны быть float или double. Для этого не обязательно объявлять переменные этим типом, можно сделать typecast.
http://en.wikipedia.org/wiki/Type_conversion
waleri вне форума Ответить с цитированием
Старый 13.10.2012, 15:39   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,303
По умолчанию

И можно избавиться от pow.
(не знаю, как описывать классы)
Код:
#include <stdio.h>
#include <iostream>
using namespace std;
 
int
main()
{
    int n = 0;
    cin >> n;
    int e = 1, c = 0;
    while (n >= 10) {
        e *= 10;
        c += e * (n % 10);
        n /= 10;
    }
    n += c;
    cout << n;
    return 0;
}
Хотя это не особо важно (разницы почти никакой)
Еще вы можете накапливать сразу степень
Но все это косметика
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.10.2012, 21:16   #7
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Мой вариант.
Код:
int n = 1234;
int a = int(pow(10, floor(log10(n))));
n = (n % a) * 10 + n / a;
printf("%d\n", n);
Nuklon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка pow(x,y); cas2010 Помощь студентам 26 12.05.2012 19:51
Функция pow |Dima| Общие вопросы C/C++ 16 19.07.2011 13:07
C. Что-то с math.h. Не работает pow. CofeIn Помощь студентам 7 18.02.2011 22:55
не работает ф-я pow Denni$ Общие вопросы C/C++ 2 09.06.2009 02:44
delphi pow? Happyman Помощь студентам 2 13.05.2008 19:40