Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
rodinjr
2 / 2 / 1
Регистрация: 29.12.2011
Сообщений: 39
1

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

29.12.2011, 23:45. Просмотров 820. Ответов 8
Метки нет (Все метки)

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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2011, 23:45
Ответы с готовыми решениями:

Ошибка с перегрузкой операторов
копилятор видимо тупит или я туплю или автор книги class countt{ public:...

ошибка с перегрузкой операции
Долго сижу и никак не могу понять в чём ошибка. Вот 3 файла. Они подключены...

при вызове функции pow() выдаёт ошибку: test.cpp:(.text+0x59b): undefined reference to `pow'
В чём дело? Добавлено через 1 минуту ps. Заголовок math.h подключен.

Посмотрите, где ошибка с перегрузкой оператора и friend функцией для класса
Приветствую. :rose:Спасибо заранее, что обратили внимание на эту...

Ошибка с pow
Подскажите пожалуйста, как исправить ошибку? #include &quot;stdafx.h&quot; #include...

8
greeezz
275 / 168 / 21
Регистрация: 10.07.2011
Сообщений: 441
29.12.2011, 23:56 2
вы тут возводите -1 в степень i+1
C++
1
pow(-1,i+1)
вы уверены что это то что вам надо?

по поводу ошибки. в функции pow() первый аргумент типа double, степень int
C++
1
pow(-1.0, i+1)
1
rodinjr
2 / 2 / 1
Регистрация: 29.12.2011
Сообщений: 39
30.12.2011, 00:17  [ТС] 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;
0
greeezz
30.12.2011, 00:18
  #4

Не по теме:

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

0
Chelioss
182 / 182 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
30.12.2011, 12:19 5
Чтобы менять знак, можно не возводить -1 в степень, а просто домножить каждый раз знак на -1.
C++
1
2
3
4
5
6
int znak = 1;
while() // или for(;;) или do{}while()
{
   // что-то делаем
   znak*=-1; // меняем каждый раз в цикле знак.
}
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
30.12.2011, 12:24 6
Можно так, (но лучше для этого pow не использовать)
C++
1
std::cout << std::pow (static_cast<double> (-1), 2) << std::endl;
0
fasked
Эксперт С++
4984 / 2563 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.12.2011, 12:31 7
Цитата Сообщение от Chelioss Посмотреть сообщение
Чтобы менять знак, можно не возводить -1 в степень, а просто домножить каждый раз знак на -1.
А можно просто минус написать перед переменной
0
Chelioss
182 / 182 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
30.12.2011, 14:33 8
Цитата Сообщение от fasked Посмотреть сообщение
А можно просто минус написать перед переменной
Это как?
C++
1
-znak;
но это не изменит переменную.
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
30.12.2011, 14:39 9
C
1
2
3
4
5
int i; // Инициализируем, степень
int val;
 
 
int res = (i % 2) ? val : -val;
0
30.12.2011, 14:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2011, 14:39

Ошибка оператора pow
#include &lt;conio.h&gt; #include &lt;locale.h&gt; #include &lt;iostream&gt; #include &lt;cmath&gt;...

Ошибка с библиотечной функцией pow
Я понимаю что все это можно сделать намного проще, но сейчас волнует почему...

Ошибка pow: DOMAIN error
При запуске в C++ Builder функция спамит вышеуказанной ошибкой, в выводе все...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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