05.07.08
c6836
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void check(float min, float max, float *w1, float *w2, float *dst)
{
float r1 = 0.0, r2 = 0.0, common = 0.0;
/* Elegxos thrhshs anwtatou oriou */
if(*w1 > max)
{
*w1 = max;
}
if(*w2 > max)
{
*w2 = max;
}
r1 = sqrt((*w1) / min);
r2 = sqrt((*w2) / min);
if(*dst < (r1 + r2))
{
common = (r1 + r2) - (*dst);
r1 = r1 - (common / 2);
r2 = r2 - (common / 2);
}
*w1 = min*pow(r1, 2);
*w2 = min*pow(r2, 2);
/* Elegxos thrhshs tou katwterou oriou meta th meiwsh twn suxnonthtwn */
if(*w1 < min)
{
*w1 = min;
}
if(*w2 < min)
{
*w2 = min;
}
}
int main (void)
{
float wmin = 0.0, wmax = 0.0, d = 0.0, tempx = 0.0, tempy = 0.0;
float *X, *Y, *W;
int n = 0, i = 0, j = 0;
printf(”Posoi sta8moi 8a eksetastoun? “);
scanf(”%d”, &n);
printf(”\nEisagete thn elaxisth dynath isxy ekpomphs: “);
scanf(”%f”, &wmin);
printf(”Eisagete th megisth dynath isxy empomphs: “);
scanf(”%f”, &wmax);
X = (float*)malloc(n*sizeof(float));
if (X == NULL)
{
printf(”Den yparxei arketh mnhmh”);
exit(1);
}
Y = (float*)malloc(n*sizeof(float));
if (Y == NULL)
{
printf(”Den yparxei arketh mnhmh”);
exit(1);
}
W = (float*)malloc(n*sizeof(float));
if (W == NULL)
{
printf(”Den yparxei arketh mnhmh”);
exit(1);
}
/* Apodwsh arxikwn timwn */
for (i = 0; i < n; i++)
{
X[i] = 0.0;
Y[i] = 0.0;
W[i] = 0.0;
}
/* Eisagwgh timwn */
for (i = 0; i < n; i++)
{
printf(”\nEisagete tis syntetagmenes tou %dou sta8mou: “, (i+1));
printf(”\nx%d= “, (i+1));
scanf(”%f”, &X[i]);
printf(”y%d= “, (i+1));
scanf(”%f”, &Y[i]);
printf(”Isxys: “);
scanf(”%f”, &W[i]);
printf(”\n———————————————–\n”);
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
tempx = fabs(X[i] - X[j]);
tempy = fabs(Y[i] - Y[j]);
d = sqrt(pow(tempx,2) + pow(tempy,2));
check(wmin, wmax, &W[i], &W[j], &d);
}
}
for (i = 0; i < n ; i++)
{
printf(”H nea syxnothta tou %dou sta8mou einai: %3.1f\n”, i+1, W[i]);
}
free(X);
free(Y);
free(W);
X = NULL;
Y = NULL;
W = NULL;
getchar();
}










