С++ SQRT-функция

когда я компилирую свою программу, она, кажется, не выполняет мою формулу, я не могу понять, что я делаю неправильно, помощь будет оценена

int main ()
  {
int distance, Xvalue, Yvalue;
double x1,y1,x2,y2;

cout << "\n Please enter X1 value: ";
cin  >> x1;
cout << " Please enter X2 value: ";
cin  >> x2;
cout << "\n Please enter Y1 value: ";
cin  >> y1;
cout << " Please enter Y2 value: ";
cin  >> y2;
    Xvalue = (x1 - x2);
    Yvalue = (y1 - y2);
distance = sqrt(Xvalue * Xvalue + Yvalue * Yvalue);

cout << "This is the distance between the two points" <<distance<< 


   cout << endl << endl;
   system ("pause");
  return 0;
 }

person user2002228    schedule 23.01.2013    source источник
comment
Что он делает, когда вы его выполняете?   -  person    schedule 23.01.2013
comment
Ваша формула неверна, во-первых.   -  person chris    schedule 23.01.2013
comment
где остальная часть кода? Это даже не скомпилируется   -  person alrikai    schedule 23.01.2013
comment
Подсказка: y1 - y1 это 0. И вы, вероятно, хотите, чтобы + в строке расчета distance тоже.   -  person Carl Norum    schedule 23.01.2013
comment
Пожалуйста, опубликуйте код, который компилируется. Если не компилируется, обратите внимание на диагностику компилятора. Если это не поможет, перефразируйте свой вопрос в терминах «Как устранить эти ошибки компилятора?».   -  person Happy Green Kid Naps    schedule 23.01.2013


Ответы (6)


Измените расстояние, Xvalue и Yvalue на удвоение

person cppguy    schedule 23.01.2013

Я почти уверен, что это может быть частью вашей проблемы:

Xvalue = (x1 - x2);
Yvalue = (y1 - y1);

наверное должно быть:

Xvalue = (x1 - x2);
Yvalue = (y1 - y2);
person Community    schedule 23.01.2013
comment
-_- я этого не заметил, но мой ответ все равно не отображается - person user2002228; 23.01.2013

Разница двойных переменных может быть double, а ваша Yvalue всегда вычисляется до zero.

На самом деле, ваша формула сама по себе неверна.

Distance Formula: Given the two points (x1, y1) and (x2, y2), 

расстояние между этими точками находится по формуле:

d = sqrt((x2-x1)^2 + (y2-y1)^2)

обратите внимание, что вы вычитаете, а не складываете квадраты разностей.

double x1,y1,x2,y2,distance, Xvalue, Yvalue;
Xvalue = (x1 - x2);
Yvalue = (y1 - y2);
distance = sqrt(Xvalue * Xvalue + Yvalue * Yvalue);
person sr01853    schedule 23.01.2013
comment
он не компилируется, когда я пытаюсь таким образом =\ - person user2002228; 23.01.2013
comment
Мои изменения не повлияют на компиляцию вашего кода. На самом деле я только что упомянул незначительные исправления. - person sr01853; 23.01.2013

Расстояние = sqrt(pow((x2-x1),2)+pow((y2-y1),2));

person Igor Taruffi    schedule 17.06.2020
comment
Пожалуйста, уменьшите свой код и попробуйте добавить описание для более подробной информации. - person Farbod Ahmadian; 17.06.2020

сначала cout входные значения, чтобы вы могли быть уверены, что проблема не во входных данных

cout<<x1<<endl;
cout<<x2<<endl;
cout<<y1<<endl;
cout<<y2<<endl;

тогда вы пытаетесь сгущать... сгущать!

cout<<"this is the"<< distance << cout ... // cout again, is not very good!

пытаться

cout<< "this is the"<< distance <<endl;
cout << endl << endl;

и в любом случае .. если вам не нужны эти "int" по определенной причине, лучше иметь двойные. (вы все еще можете округлить их позже с помощью «floor (value)»)

person CoffeDeveloper    schedule 23.01.2013

включать

включать

интервал основной (пустой)

{ float x1, x2, y1, y2, Distance;

printf("значение x2:"); сканф("%f",&x2);

printf("значение x1: "); сканф("%f",&x1);

printf("значение y2: "); сканф("%f",&y2);

printf("значение y1: "); сканф("%f",&y1);

Расстояние = sqrt(pow((x2-x1),2)+pow((y2-y1),2)); printf("Расстояние между (X2,X1) и (Y2,Y1) равно %f", Distance);

вернуть 0;

}

person Igor Taruffi    schedule 17.06.2020