Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
2 / 2 / 1
Регистрация: 29.12.2011
Сообщений: 39
1

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

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

Author24 — интернет-сервис помощи студентам
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2011, 23:45
Ответы с готовыми решениями:

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

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

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

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

8
278 / 173 / 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
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
186 / 186 / 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
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
30.12.2011, 12:24 6
Можно так, (но лучше для этого pow не использовать)
C++
1
std::cout << std::pow (static_cast<double> (-1), 2) << std::endl;
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
30.12.2011, 12:31 7
Цитата Сообщение от Chelioss Посмотреть сообщение
Чтобы менять знак, можно не возводить -1 в степень, а просто домножить каждый раз знак на -1.
А можно просто минус написать перед переменной
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
30.12.2011, 14:33 8
Цитата Сообщение от fasked Посмотреть сообщение
А можно просто минус написать перед переменной
Это как?
C++
1
-znak;
но это не изменит переменную.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.12.2011, 14:39
Помогаю со студенческими работами здесь

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

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

Ошибка pow: DOMAIN error
При запуске в C++ Builder функция спамит вышеуказанной ошибкой, в выводе все значения при (i-j)&lt;0...

Ошибка pow:Overflow error
Ошибка pow:Overflow error, как ее исправить? Заранее спасибо! Задание:Разработать программу...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru