Вопрос Напишите пожалуйста программу на СИ

Регистрация
13 Янв 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
На плоскости заданы координаты трех точек А, В, С. Выяснить, какая из точек находится на минимальном расстоянии от начала координат. Вычисление расстояния от точки до начала координат оформить в виде процедуры с параметрами.
 
Совершенно ни к чему вычислять расстояние, экономнее сравнивать квадраты расстояний. И в Си нет процедур, есть функции типа void.

#include <stdio.h>
#include <float.h>
void d2(float *z, float x, float y){*z=x*x+y*y;}
int main(){
float x,y,z,dm=FLT_MAX; char cm; for(char c='A';c<='C';c++){
printf("%c(x y): ",c); scanf("%f%f",&x,&y);
d2(&z,x,y); if(z<dm)dm=z,cm=c;} printf("min: %c\n",cm);}
 
На СИ не напишу, но это стандартная задача на знание геометрии и теоремы Пифагора.
X и Y - катеты. Сумма квадратов катетов равна квадрату гипотенузы. Гипотенуза же в данном случае собственно и является расстоянием от точки до начала координат
 
#include <math.h>
#include <stdio.h>
struct coord { double x, y; char s; };
coord outin(char s)
{ coord u; u.s = s; printf("%c: ", s);
scanf("%lf%lf", &u.x, &u.y); return u; }
double r(coord p) { return sqrt(p.x*p.x+p.y*p.y); }
int main() { coord m, point[3]; double rpoint, rmin; point[0] = outin('A'); point[1] = outin('B');
point[2] = outin('C'); m = point[0]; rmin = r(point[0]);
for (int i = 1; i < 3; i++) { rpoint = r(point);
if (rpoint < rmin) { rmin = rpoint; m = point; } }
printf("%c(%f,%f), r=%f\n", m.s, m.x, m.y, rmin); }
 
Назад
Сверху