2015-02-19 3 views
-1

Я только начал вводить в класс компьютерного программирования, я знаю только программирование на 2 недели. Я продолжаю получать «конфликтующие типы для« sqrt », поэтому я создал прототип, и я все еще получаю сообщение. Я все пробовал.Я продолжаю получать сообщение об ошибке: «Конфликтующие типы для« sqrt »»

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

float distance(float a, float b, float c, float d); 


int main() 
{ 
    int a,b,c,d,D; 
    printf("Please enter the first x coordinate. x1= "); 
    scanf("%f",&a); 
    printf("Please enter the first x coordinate. y1= "); 
    scanf("%f",&b); 
    printf("Please enter the first x coordinate. x2= "); 
    scanf("%f",&c); 
    printf("Please enter the first x coordinate. y2= "); 
    scanf("%f",&d); 

    D = distance(a,b,c,d); 
    printf("Distance = %.4f",D); 

    return 0; 
} 

float distance(float x1, float x2, float y1, float y2) 
{ 
    float d, D, x, y, X, Y; 
    x = x1 - x2; 
    y = y1 - y2; 
    X = x*x; 
    Y = y*y; 
    d = X + Y; 
    float sqrt (float d); 
} 
+1

Вы receclaring sqrt() Я думаю. Удалите инструкцию float перед sqrt() –

ответ

1

Это объявление функции

float sqrt (float d); 

, если вы хотите, чтобы вернуть результат вызова функции вам необходимо

return sqrt(d); 

также, конфликтующие ошибка типа связано с тем, что прототипом функции sqrt является

double sqrt(double x); 

есть float эквивалент

float sqrtf(float x); 

поэтому, возможно, ваша функция должна возвращать

return sqrtf(d); 

Примечания: Я не вижу никакой пользы в расщеплении этого расчета так вы могли бы только

return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); 
+2

Упрощение: 'return hypotf (x1 - x2, y1 - y2);' – chux

+0

Я люблю тебя! Спасибо! – rickylance