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

Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? - C++

Восстановить пароль Регистрация
 
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
13.05.2011, 19:25     Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? #1
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
#include <iostream>
#include <cmath>
using namespace std;
struct point
{
    int x,y,z;
};
double dlina(point a,point b)
{
    return sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2));    (1)
}
double triangle(double d,double e,double f,double p,double max)
{
    if ((d+e>f) && (d+f>e) && (f+e>d))
        if (p>max) max=p;
    return max;
}
 
int main()
{
    point a[10];
    double d,e,f,p,max=0;
    int n;
    cout<<"введ колич точек";
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cout<<"введите координаты";
        cin>>a[i].x>>a[i].y>>a[i].z;
    }
    for(int i=1;i<=n-2;++i)
        for(int j=i+1;j<=n-1;++j)
            for(int k=j+1;k<=n;++k)
            {
                d=dlina(a[i],a[j]);
                e=dlina(a[j],a[k]);
                f=dlina(a[k],a[i]);
                p=d+e+f;
                triangle(d,e,f,p,max);
            }
    return 0;
}

подскажи пжл,в (1) пишет ошибку - перегруженность pow(int,int) неосуществима-не пойму как исправить
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
13.05.2011, 19:29     Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? #2
1. Массивы нумеруются с 0!!!
2.
C++
1
2
3
4
double dlina(point a,point b)
{
        return sqrt((a.x-b.x)*(a.x-b.x,2)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));    (1)
}
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
13.05.2011, 19:29     Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? #3
C++
1
pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2)
Видимо вместо точек надо использовать индексы массива типа pow(a[x]-b[x],2)
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
13.05.2011, 19:35     Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? #4
Цитата Сообщение от mimicria Посмотреть сообщение
C++
1
pow(a.x-b.x,2)+pow(a.y-b.y,2)+pow(a.z-b.z,2)
Видимо вместо точек надо использовать индексы массива типа pow(a[x]-b[x],2)
Нет! У него же две point в параметрах!
Ошибка в pow() потому, что в point - целые. Компилятор не знает, какую из функций pow() вызывать: то ли с параметрами floatб ттс параметрами double.
Решений, кроме моего показанного - два:
1. Объявить в структуре не целые, а дробные.
2. Указать преобразование типа первого аргумента в pow()
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
13.05.2011, 19:37     Ошибка - перегруженность pow(int,int) неосуществима. Как исправить? #5
Виноват, структуру не заметил, а внизу зацепил массив a[], думал точки в массивах
Yandex
Объявления
13.05.2011, 19:37     Ошибка - перегруженность pow(int,int) неосуществима. Как исправить?
Ответ Создать тему
Опции темы

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