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

Ошибка с перегрузкой pow - C++

Восстановить пароль Регистрация
 
rodinjr
2 / 2 / 0
Регистрация: 29.12.2011
Сообщений: 39
29.12.2011, 23:45     Ошибка с перегрузкой pow #1
error C2668: 'pow' : ambiguous call to overloaded function
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "stdafx.h"
#include <iostream>
#include <math.h>
 
using namespace std;
 
template <class Temp>
class List
{
    Temp *m;
public:
    List(int);
    void run(Temp *, int);
    void setMas(Temp, int);
};
 
template <class Temp>
List<Temp>::List(int n)
{
    m=new Temp[n];
}
 
template <class Temp>
void List<Temp>::run(Temp *mass, int n)
{
    int i,j;
    Temp res;
    for(i=0; i<n;i++){ 
        res=1;
        for(j=0;j<=i;j++)
            res*=m[j]*pow(-1,i+1);
        mass[i]=res;
    }
}
 
template <class Temp>
void List<Temp>::setMas(Temp k, int c)
{
    m[c]=k;
}
 
void print(int *m, int n)
{
    int i, s;
    s=0;
    for(i=0;i<n;i++){
        cout<<m[i]<<" ";
    }
    cout<<"\n";
}
 
int main()
{
    int n, i, k, *resultMas, s;
    char ch, *resultCharMas;
    cout<<"Input N: ";
    cin>>n;
 
    List<int> ob1(n);
    resultMas=new int[n];
    cout<<"Input "<<n<<"elements (int): ";
    for(i=0;i<n;i++){
        cin>>k;
        ob1.setMas(k,i);
 }
    ob1.run(resultMas,n);
    cout<<"imeem:"; print(resultMas,n);
 
    List<char> ob2(n);
    resultCharMas= new char [n];
    cout<<"Input "<<n<<" elements (char): ";
    for(i=0;i<n;i++){
        cin>>ch;
        ob2.setMas(ch, i);
 }
    ob2.run(resultCharMas, n);
    s=1;
    for (i=0; i<n; i++){ 
        s*=int(resultCharMas[i])*pow(-1,i+1);
        resultCharMas[i]=s;
        cout<<resultCharMas[i]<<" ";
 }
    cout<<"\n";
 
    delete [] resultMas;
    delete [] resultCharMas;
    system("pause");
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
29.12.2011, 23:56     Ошибка с перегрузкой pow #2
вы тут возводите -1 в степень i+1
C++
1
pow(-1,i+1)
вы уверены что это то что вам надо?

по поводу ошибки. в функции pow() первый аргумент типа double, степень int
C++
1
pow(-1.0, i+1)
rodinjr
2 / 2 / 0
Регистрация: 29.12.2011
Сообщений: 39
30.12.2011, 00:17  [ТС]     Ошибка с перегрузкой pow #3
Может быть и ошибаюсь...

Дано: число N и последовательность a1, a2, … aN
Создать шаблон класса, порождающий динамические одномерные массивы с элементами различных типов (вещественные, целочисленные, символьные и т.д.). Тип данных и результат являются параметрами по отношению к классу, программа должна иметь методы инициализации, конструктор, деструктор, метод просмотра значений созданного массива, согласно заданному алгоритму.

a1, -a1*a2, +a1*a2*a3, … ,(-1)N*a1*a2*…aN;

Добавлено через 15 минут
a1, -a1*a2, +a1*a2*a3, … ,(-1)^N*a1*a2*…aN;
greeezz
30.12.2011, 00:18
  #4

Не по теме:

rodinjr, простите .. чет не могу собрать мозг в кучу чтобы въехать в ваше условие задачи. Пора видать отдохнуть

Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
30.12.2011, 12:19     Ошибка с перегрузкой pow #5
Чтобы менять знак, можно не возводить -1 в степень, а просто домножить каждый раз знак на -1.
C++
1
2
3
4
5
6
int znak = 1;
while() // или for(;;) или do{}while()
{
   // что-то делаем
   znak*=-1; // меняем каждый раз в цикле знак.
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
30.12.2011, 12:24     Ошибка с перегрузкой pow #6
Можно так, (но лучше для этого pow не использовать)
C++
1
std::cout << std::pow (static_cast<double> (-1), 2) << std::endl;
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.12.2011, 12:31     Ошибка с перегрузкой pow #7
Цитата Сообщение от Chelioss Посмотреть сообщение
Чтобы менять знак, можно не возводить -1 в степень, а просто домножить каждый раз знак на -1.
А можно просто минус написать перед переменной
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
30.12.2011, 14:33     Ошибка с перегрузкой pow #8
Цитата Сообщение от fasked Посмотреть сообщение
А можно просто минус написать перед переменной
Это как?
C++
1
-znak;
но это не изменит переменную.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2011, 14:39     Ошибка с перегрузкой pow
Еще ссылки по теме:

Ошибка pow:Overflow error C++
C++ Ошибка оператора pow
Ошибка с pow C++

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
30.12.2011, 14:39     Ошибка с перегрузкой pow #9
C
1
2
3
4
5
int i; // Инициализируем, степень
int val;
 
 
int res = (i % 2) ? val : -val;
Yandex
Объявления
30.12.2011, 14:39     Ошибка с перегрузкой pow
Ответ Создать тему
Опции темы

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