Salve ragazzi, potreste darmi una mano a risolvere questo esercizio? Mi sono bloccato e non riesco ad andare avanti.
Ecco il testo dell'esercizio:
Si vuole sviluppare un algoritmo di calcolo del centroide. 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 deve visualizzare la scacchiera, mostrando un ‘ ’ per le caselle non occupate e mostrando una ‘X’ per le caselle occupate dagli oggetti. L’algoritmo determina il centroide dell’insieme dei 50 oggetti: il centroide è un punto della scacchiera che ha per ascissa l’intero più vicino alla media delle ascisse di tutti gli oggetti e per ordinata l’intero più vicino alla media delle ordinate di tutti gli oggetti. L’algoritmo deve visualizzare di nuovo la scacchiera, indicando, oltre alle caselle vuote e a quelle occupate, anche la posizione del centroide (indicandola con la lettera ‘C’). Infine, l’algoritmo calcola e visualizza la distanza di ognuno degli oggetti dal centroide, e determina e visualizza sia la minima distanza (indicando anche la posizione dell’oggetto a minima distanza) sia la massima distanza (indicando anche la posizione dell’oggetto a massima distanza).
Questo è ciò che sono riuscito a fare:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
void main(){
int i,j,nx,ny;
char scacchiera[][30]={
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
//continua cosi per 30 righe.. le ho eliminate qui nel codice per questioni di spazio
};
srand(time(NULL));
for(i=1;i<=50;i++){
nx = rand()%31;
ny = rand()%31;
scacchiera[nx][ny]='X';
}
printf("\n\n");
for(i=0;i<=30;i++){
for(j=0;j<=30;j++){
printf("%c",scacchiera[i][j]);
}
printf("\n");
}
}
anche se quando vado a compilare e lanciare il programma, non mi stampa le 50 X ma all'incirca una 30ina..
come posso fare?