Условие:
Даны на плоскости точки с координатами (x, y). Переставить точки по возрастанию их расстояния до точки k (заданая, фиксированная точка). Значения х и у находятся во внешнем файле. Результат также необходимо записать на другой внешний файл.
FILE *flr,*flw;
double rast(float x1, float y1, float x2, float y2)
{
return (pow((x1-x2),2)+pow((y1-y2),2));
};
using namespace std;
int main()
{
int i=0,n=0,k=2;
float u,v;
if ((flr=fopen("a.txt","r"))==NULL)
{
printf("Error in opening file a.dat \n"); getchar(); exit(0);
}
while(fscanf(flr, "%i %i", &u, &v) != EOF) {
n++;
}
rewind(flr);
float x[1000],y[1000];
for (i=0; i<=n-1; i++)
{
fscanf(flr, "%g %g", &u, &v);
printf("u[%i]=%g v[%i]=%g\n\n",i, u, i, v);
x[i]=u; y[i]=v;
};
int m;
float xk,yk;
xk=x[k];
yk=y[k];
float s,t;
for (m=0; m< n ; m++)
{
for (i=0;i<n;i++)
{
if ( (rast(x[i],y[i],xk,yk)) > (rast ( x[m],y[m],xk,yk)) )
{
s=x[i]; t=y[i];
cout<<"s="<<s;
x[m]=x[i]; y[m]=y[i];
x[i]=s; y[i]=t;
} ;
};
}
if ((flw=fopen("b.txt","w"))==NULL)//создать файл для записи
{printf("Error in opening file b.dat \n"); getchar(); exit(0); }
for (i=0; i<=n-1; i++)
{
if (i==k){ i++;}
else
fprintf(flw,"u=%g, v=%g\n",x[i],y[i]);
};
getchar();
}
Сортировка работает неправильно. Помогите поправить код.
у вас неправильно обмениваются элементы, надо так:
s=x[i]; t=y[i];
cout<<"s="<<s;
x[i]=x[m]; y[i]=y[m];
x[m]=s; y[m]=t;
Это потому, что во время сортировки в элементы массивов x[k]
и y[k]
постоянно попадают разные элементы массивов.
Просто вынесите x[k]
и y[k]
из массивов перед сортировкой в две переменные и сравнивайте с ними.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В Xcode при вводе русского символа в переменную типа char, если сразу же вывести эту самую переменную, выводит \320 или что-то похожее
Помогите, пожалуйста, с одной проблемойЯ никак не могу вывести значение х
Написать программу, использующую механизм управления при помощи таблиц (управление осуществляется данными!)Нужно выделить следующие типы...
Есть приложение на QT C++ для AndroidСтоит задача развернуть приложение на весь экран