Ciao sto impazzendo con questo programma.Questa è la traccia:
Sviluppare un algoritmo elementare di classificazione. L’algoritmo considera una
scacchiera di 30x30 caselle e dispone a caso (usando la function rand) 50 oggetti (la
posizione è una coppia di numeri interi). L’algoritmo posiziona sulla scacchiera, sempre
generando a caso la loro posizione (usando la function rand), 2 nuovi oggetti che
chiameremo centro1 e centro2. L’algoritmo deve visualizzare la scacchiera, mostrando
un ‘ ’ per le caselle non occupate, mostrando una ‘X’ per le caselle occupate dagli
oggetti, un ‘1’ per la casella occupata da centro1 e un ‘2’ per la casella occupata da
centro2. L’algoritmo determina i seguenti due insiemi A e B:
· A è l’insieme degli oggetti che sono più vicini a centro1 piuttosto che a centro2;
· B è l’insieme degli oggetti che sono più vicini a centro2 piuttosto che a centro1.
La “vicinanza” è determinata calcolando la usuale distanza geometrica. Infine
l’algoritmo visualizza di nuovo la scacchiera, ma questa volta indicando con la lettera
‘A’ ognuno degli oggetti dell’insieme A, con la lettera ‘B’ ognuno degli oggetti
dell’insieme B e con la lettera ‘U’ gli eventuali oggetti che hanno uguale distanza sia
rispetto a centro1 che a centro2. La posizione di centro1 è ancora indicata con ‘1’ e
quella di centro2 con ‘2’.
Fino ad ora ho fatto questo:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main()
{
int i,r,c,a,b,d,e;
char X,A,U,B;
char scacchiera [][30]= {{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}};
//la scacchiera non è tutta//
srand(time(NULL)); //qui inserisco le 50 X
for(i=1;i<51;i++)
{
r=rand()%31;
c=rand()%31;
if(scacchiera[r][c]==' ')
scacchiera[r][c]='X';
else i--;
}
srand(time(NULL)); //qui inserisco il numero 1
for(i=0;i<1;i++)
{
r=rand()%31;
c=rand()%31;
if(scacchiera[r][c]==' ')
scacchiera[r][c]='1';
else i--;
}
srand(time(NULL)); //qui il numero 2
for(i=0;i<1;i++)
{
r=rand()%31;
c=rand()%31;
//printf("Il numero 2 ha come coordinate: %d %d \n",r,c);
if(scacchiera[r][c]==' ')
scacchiera[r][c]='2';
else i--;
}
printf("\n\n");
for(r=0;r<30;r++){
for(c=0;c<30;c++)
printf("%c",scacchiera[r][c]);
printf("\n");
}
adesso la parte che non so fare è quella di determinare i 2 insiemi A e B! mi potete dare un mano per piacere?