Oppure

Loading
01/01/07 15:30
clikkami
1.    Algoritmo legato al gioco degli scacchi. L’algoritmo considera una scacchiera regolamentare (8x8 caselle bianche e nere, casella nera in basso a sinistra), dispone a caso (usando la function rand) 8 Pedoni bianchi (per semplicità, possono stare in una qualunque casella non occupata da un altro pezzo) e poi dispone a caso (usando la function rand) una Regina e da una Torre neri (possono stare in una qualunque casella non occupata da un altro pezzo). L’algoritmo deve visualizzare la scacchiera, mostrando una ‘b’ e una ‘n’ per le caselle bianche e nere non occupate, mostrando una ‘P’ nelle caselle occupate dai Pedoni, una ‘R’ per la casella occupata dalla regina e una ‘T’ per la casella occupata dalla Torre. L’algoritmo determina, in base alla posizione di tutti i pezzi sulla scacchiera, quali sono i Pedoni che possono essere catturati da uno qualunque dei possibili movimenti della Regina e della Torre. Fare attenzione al fatto che un Pedone potrebbe essere “protetto” da un altro Pedone o da un altro pezzo e che i Pedoni “protetti” non possono essere catturati. Infine l’algoritmo visualizza l’elenco dei Pedoni catturabili, precisando anche da quale pezzo sono catturabili e utilizzando la notazione usuale delle posizioni nel gioco degli scacchi, ovvero scrivendo, per esempio: Pedone in a3 catturabile da Regina in b4, Pedone in d6 catturabile da Torre in e6,….. Ricordare che nella notazione usuale degli scacchi le righe della scacchiera sono indicate mediante numeri interi (da 1 ad 8, dal basso verso l’alto), mentre le colonne sono indicate mediante lettere dell’alfabeto (da ‘a’ ad ‘h’ da sinistra a destra) e che la notazione prevede di indicare prima la lettera (colonna) e poi il numero (riga).



2.    Algoritmo per il calcolo dell’array 2D delle medie di un array 2D. L’algoritmo riceve in input un array 2D quadrato A, mxn, e genera in output un array 2D quadrato A_diffuso, dello stesso size di A. L’elemento i,j di A_diffuso è la media dei quattro elementi vicini dell’elemento i,j di A (ovvero quello sopra, quello sotto, quello a sinistra e quello a destra). Fare attenzione al caso in cui l’elemento i,j si trova sul bordo dell’array (in tal caso gli elementi vicini sono tre oppure due). Nei test (almeno 4) usare array 2D di size 8x8, 10x10, 15x15, 20x20. Il main genera a caso gli elementi dell’array di input, che devono essere numeri float nell’intervallo [-100,100]): si ricorda che, se x_casuale è dichiarata di tipo float, allora l’istruzione
x_casuale=-100.0F+200.0F*(float)rand()/(float)MAX_RAND;
genera un numero casuale di tipo float (distribuzione uniforme) nell’intervallo [-100,100].

AIUTATEMIIIIIIIIIIIIIIIIIIIIIIII
mandatemi una mail a clikkami85@hotmail.it
GRAZIE MILLE
Ultima modifica effettuata da pierotofy 01/01/07 18:39
aaa
01/01/07 18:40
pierotofy
Ed esattamente dov'è che ti blocchi? Qual'è il problema nell'implementare questi algoritmi?

Nel caso avessi frainteso lo scopo di questo forum, qui non facciamo programmi su richiesta.
Il mio blog: piero.dev
01/01/07 20:08
clikkami
Innanzitutto scusatemi se ho messo due topic uguali in sezioni diverse...nn avevo letto il regolamento, cmq dovrei inviarti l'algoritmo ke ho implementato io...dove posso inviartelo
ciao risp
aaa
01/01/07 20:37
pierotofy
Qui sul forum, ovviamente :)

Usa i tag [ code] e [/ code] per inserirlo formattato correttamente.
Il mio blog: piero.dev
01/01/07 23:01
clikkami
#include <stdio.h>
#include <stdlib.h>

void main ()
{
    int i,j,nx,ny,nx1,ny1;
    char scacchiera[][8]=
    {{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'}};

    
    for (i=1;i<=9;i++)
    {
        nx=rand()%8;
        ny=rand()%8;
        scacchiera[nx][ny]='P';
nx1=rand()%1;
ny1=rand()%1;
scacchiera[nx1][ny1]='R';
    }
    for (i=0;i<8;i++)
    {
        for (j=0;j<8;j++)
        printf(" %c",scacchiera[i ][j]);
        printf("\n";);
    }
printf(" a b c d e f g h\n";);
}


QUESTO E' TUTTO QUELLO KE SN RIUSCITO A FARE...
Ultima modifica effettuata da pierotofy 02/01/07 14:57
aaa
02/01/07 15:13
pierotofy
Un sacco di lavoro rimasto da fare insomma :)

Procediamo passo per passo: dispone a caso (usando la function rand) 8 Pedoni bianchi (per semplicità, possono stare in una qualunque casella non occupata da un altro pezzo) e poi dispone a caso (usando la function rand) una Regina e da una Torre neri (possono stare in una qualunque casella non occupata da un altro pezzo)

for (i=1;i<=9;i++) 
{ 
nx=rand()%8; 
ny=rand()%8; 
scacchiera[nx][ny]='P'; 
nx1=rand()%1; 
ny1=rand()%1; 
scacchiera[nx1][ny1]='R'; 
} 


Qui vedo alcuni errori. Intanto il ciclo esegue 9 iterazioni anziche' 8. Inoltre il codice non tiene considerazione del fatto che le coordinate nx e ny alla seconda iterazione potrebbero essere gia' occupate da un pezzo. Oltre a questo la regina in questo modo viene impostata per 8 volte nella posizione 0,0 o 0,1 o 1,0 o 1,1.

Una soluzione (non troppo elegante e non ottimizzata ma funzionante) potrebbe essere:

int i = 0;
while(i < 8){
nx=rand()%8; 
ny=rand()%8; 
if (scacchiera[nx][ny] != 'P'){
 scacchiera[nx][ny]='P'; 
 i++;
}
} 

i = 0;
while(i < 2){
nx=rand()%8; 
ny=rand()%8; 
if (scacchiera[nx][ny] != 'P' && scacchiera[nx][ny] != 'R'){
 if (i==0) scacchiera[nx][ny]='R'; //Regina
 else scacchiera[nx][ny]='T'; //Torre 
 i++;
}
} 



L’algoritmo deve visualizzare la scacchiera, mostrando una ‘b’ e una ‘n’ per le caselle bianche e nere non occupate, mostrando una ‘P’ nelle caselle occupate dai Pedoni, una ‘R’ per la casella occupata dalla regina e una ‘T’ per la casella occupata dalla Torre


Questo mi pare che l'hai gia' implementato (anche se con un'imperfezione, hai messo il printf all'interno del secondo ciclo anziche' all'interno del primo):

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



L’algoritmo determina, in base alla posizione di tutti i pezzi sulla scacchiera, quali sono i Pedoni che possono essere catturati da uno qualunque dei possibili movimenti della Regina e della Torre


Qui dov'e' che non riesci a capire come implementare l'algoritmo?
Il mio blog: piero.dev
03/01/07 0:04
clikkami
Ti ringrazio per avermi fatto capire molte altre cose ke mi facevano bloccare...
cmq nn ho neanke iniziato l'implementazione delle altre cose...
appena lo farò ti scriverò il programma sul forum e come hai fatto gentilmente oggi, se potrai farlo nuovamente, me lo correggerai!!!
GRAZIE MILLE
aaa
03/01/07 15:37
clikkami
#include <stdio.h>
#include <stdlib.h>

void main ()
{
    int i=0,j,nx,ny;
    char scacchiera[][8]=
    {{'b','n','b','n','b','n','b','n'},
    {'n','b','n','b','n','b','n','b'},
    {'b','n','b','n','b','n','b','n'},
    {'n','b','n','b','n','b','n','b'},
    {'b','n','b','n','b','n','b','n'},
    {'n','b','n','b','n','b','n','b'},
    {'b','n','b','n','b','n','b','n'},
    {'n','b','n','b','n','b','n','b'}};
    
    printf(" A B C D E F G H\n\n";);
    while(i<8)
    {
         nx=rand()%8;
        ny=rand()%8;
        if(scacchiera[nx][ny] != 'P')
        {
            scacchiera[nx][ny]='P'; /* Pedone */
        i++;
        }
    }
    
    i=0;
    while(i<2)
    {
        nx=rand()%8;
        ny=rand()%8;
        if(scacchiera[nx][ny] != 'P' && scacchiera [nx][ny] !='R')
        {
            if(i==0)
                scacchiera[nx][ny]='R'; /* Regina */
            else
                scacchiera[nx][ny]='T'; /* Torre */
            i++;
        }
    }
    for (i=0;i<8;i++)
    {
        printf("%d",8-i);
        for (j=0;j<8;j++)
            printf(" %c",scacchiera[i][j]);
        printf("\n";);
    }

    printf("\n\n\n\n\n\n\n";);
}
QUESTO E' IL PROGRAMMA MODIFICATO SECONDO LE TUE INFORMAZIONI...
ORA IO NN RIESCO A CAPIRE COME DEVO FARE PER INDICARE LE POSIZIONI DELLA TORRE E DELLA REGINA!!!
SE SN MESSE IN MODO CASUALE COME DEVO FARE PER IMPLEMENTARLE? scacchiera[nx][ny]=scacchiera [i][j]?
dove i è l'i-simo elemento di cosa?
e j è il j-simo elemento di cosa?
sto proprio andando in confusione,vero?
Ultima modifica effettuata da clikkami 03/01/07 15:38
aaa