PDA

Visualizza la versione completa : [C] Scacchiera: calcolo distanza punti


the_game
17-02-2011, 12:40
Sto facendo questo nuovo programma che dalla traccia non mi era sembrato difficile,ma mi sono bloccato in un punto.Allora vi spiego cosa devo fare in questo programma:devo creare una scacchiera 30x30 e inserire in modo casuale 50 X,un numero 1 e un numero 2.Dopo devo determinare 2 insiemi,l'insieme A composto dalle X piu vicino al numero 1 che al numero 2,e l insieme B composto dalle X piu vicine al numero 2 che al numero 1.

fino alla creazione della scacchiera e l inserimento delle X e del numero 1 e 2 ci sono arrivato,ma non so proprio come fare a determinare quest'insiemi!!come faccia a far calcolare al programma quali sono le X piu vicine all'1 e quelle piu vicine al 2?

questo dove sono arrivato:



#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main() {
int i,r,c,d1,d2;
char X;
char scacchiera [][30]= {{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}'}; //la scacchiera non l ho messa tutto//

srand(time(NULL));
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));
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));
for(i=0;i<1;i++) {
r=rand()%31;
c=rand()%31;

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"); }

system("PAUSE");
}

the_game
18-02-2011, 10:54
nessuni mi puo aiutare?

YuYevon
18-02-2011, 11:49
http://forum.html.it/forum/showthread.php?s=&threadid=1444687

the_game
18-02-2011, 17:06
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

void carica_oggetti(int r,int c,char scacchiera[][30]);
void carica_centro1_centro2(int r1,int r2,int c1, int c2,char scacchiera[][30]);
void calcola(char scacchiera[][30]);
void distanza(int i,int j,int r1,int r2,int c1,int c2, float dist1,float dist2);


int main()
{
int i,j,r,c,d1,d2,r1,r2,c1,c2;
char X;

char scacchiera [][30]= {{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '}};


carica_centro1_centro2(r1,r2,c1,c2,scacchiera);


for(r=0;r<30;r++){
for(c=0;c<30;c++)
printf("%c",scacchiera[r][c]);
printf("\n");
}
system("pause");
printf("************************************************** ***************\n");
carica_oggetti(r,c,scacchiera);

printf("\n\n");

for(r=0;r<30;r++){
for(c=0;c<30;c++)
printf("%c",scacchiera[r][c]);
printf("\n");
}
system("pause");

printf("************************************************** ***************\n");
calcola(scacchiera);
for(i=0;i<30;i++){
for(j=0;j<30;j++){
printf("%c",scacchiera[i][j]);

}
printf("\n");
}
system("PAUSE");
}//fine main

/*funzione che genera una nuova scacchiera con gli oggetti dell'insieme A e dell'insieme B*/


void calcola(char scacchiera[][30])
{
int i,j,r1,r2,c1,c2;
float dist1,dist2;
for (i=0;i<30;i++){
for(j=0;j<30;j++){
if(scacchiera[i][j]=='X'){
distanza(i,j,r1,r2,c1,c2,dist1,dist2);

if(dist1<dist2)
scacchiera[i][j]='A';
else
scacchiera[i][j]='B';

}

else {
if(dist1==dist2)
scacchiera[i][j]='U';
}

}
}

}

/*funzione per calcolare la distanza delle X da centro 1 e centro 2*/

void distanza(int i,int j,int r1,int r2,int c1,int c2,float dist1,float dist2)
{

dist1=sqrt((r1-i)*(r1-i)+(c1-j)*(c1-j));
dist2=sqrt((r2-i)*(r2-i)+(c2-j)*(c2-j));

}

/*funzione che genera una posizione casuale per centro 1 e centro 2*/

void carica_centro1_centro2(int r1,int r2,int c1, int c2,char scacchiera[][30])
{

srand(time(NULL));

r1=rand()%31;
c1=rand()%31;

r2=rand()%31;
c2=rand()%31;

scacchiera[r1][c1]='1';
scacchiera[r2][c2]='2';
}

/*funzione che genera una posizione casuale per 50 oggetti*/

void carica_oggetti(int r,int c,char scacchiera[][30])
{
int i;
srand(time(NULL));
for(i=0;i<50;i++)
{
r=rand()%31;
c=rand()%31;

if(scacchiera[r][c]==' ')
scacchiera[r][c]='X';
else i--;
}
}




questo il mio programma,solo che mi stampa solo le A,mi sembra tutto giusto,potete dirmi dove sbaglio?

Loading