
04.04.2009, 19:49
|
|
Познающий
Регистрация: 09.03.2009
Сообщений: 43
С нами:
9039367
Репутация:
53
|
|
Кто может перепишите пожалуйста программу без структур а массивами
Код:
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
// объявим структуру "точка"
struct Scoord
{
double x;
double y;
};
//------------------
int main()
{
const int N = 10; // количество точек
const double LMAX=-10, RMAX=10; // левая и правая границы для генерации координат
const double TMAX=-10, BMAX=10; // верхняя и нижняя
Scoord mas[N]; // массив точек
int i,j,K;
double S,Smin;
srand(time(NULL));
for(i=0;i<N;i++)
{
// разбрасываем точки
mas[i].x = rand()*(RMAX-LMAX)/(double)RAND_MAX+LMAX;
mas[i].y = rand()*(BMAX-TMAX)/(double)RAND_MAX+TMAX;
printf("To4ka %d: %5.3lf %5.3lf\n",i,mas[i].x,mas[i].y);
}
printf("\n");
//==================
K = 0; // считаем, что вершина K - то, что нам нужно
Smin = -1;
for(i=0;i<N;i++) // перебираем все возможные "корни куста"
{
S = 0; // изначально сумма равна 0
for(j=0;j<N;j++) // перебираем вершины куста
{
if(j==i) continue; // если текущая вершина - корень, пропускаем
S += pow( pow(mas[j].x-mas[i].x,2) + pow(mas[j].y-mas[i].y,2),0.5);
}
if(Smin==-1) // если мы еще пока ничего не запомнили...
{
Smin = S; // то запоминаем эту сумму
K = i; // и номер вершины-корня
}
else
{
if(S<Smin) // иначе, если текущая сумма меньше
{
Smin = S; // запоминаем ее
K = i;
}
}
}
//=======
printf("Vershina kusta: %5.3lf %5.3lf\n", mas[K].x,mas[K].y);
printf("Summa reber = %5.3lf\n", Smin);
//---------
getch();
return 0;
}
|
|
|