Показать сообщение отдельно

  #10  
Старый 04.04.2009, 19:49
sebay
Познающий
Регистрация: 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;
}
 
Ответить с цитированием