ciao ho un problema, devo svolgere un esercizio..la traccia è questa:

"Scrivere un programma che, dato un pezzo degli scacchi,
riempia una matrice (scacchiera) con dei numeri interi. Ogni casella contiene un va-
lore intero che rappresenta il numero di locazioni raggiungibili dal pezzo posizionato
in quella casella. La scacchiera `e una matrice quadrata con 8 righe ed 8 colonne. Le
righe sono numerate da sinistra a destra e le colonne sono numerate dall’alto verso il
basso. Ad esempio, se il pezzo `e il cavallo, nella posizione (0,0) ci sar`a un intero che
rappresenta il numero di possibili locazioni raggiungibili se il cavallo `e posizionato
nella casella (0,0) della scacchiera. In (0,1) avremo il numero di posizioni che un
cavallo posizionato in (0,1) pu`o raggiungere e cos`ı via.
Input: Il metodo main legger`a un intero che rappresenta il tipo di pezzo degli
scacchi. Vengono considerati quattro pezzi:
- 1 per la torre.
- 2 per l’alfiere.
- 3 per il cavallo.
- 4 per la regina.

Verr`a poi richiamata la funzione da implementare che prender`a in input il tipo di
pezzo.
Output: La funzione stamper`a la scacchiera (matrice con 8 righe ed 8 colonne)
riempita con i valori interi come definito sopra. Potete consultare il link degli scacchi
(scritto sopra) se non conoscete le possibili mosse dei diversi pezzi. Ricordate che la
regina pu`o effettuare sia le mosse della torre che dell’alfiere ma non del cavallo."

Sono riuscito (credo) a scrivere la porzione di codice relativa alla Torre e all'Alfiere (e in teoria, di conseguenza, anche alla Regina), ho due problemi:
1- il cavallo...non so neanche cm iniziare >_<
2- come unire le porzioni di codice nello stesso programma nel quale queste 4 funzioni vengono richiamate dal Main (se l'utente in input mette 1, il main dovra richiamare la funzione Torre..2, l'alfiere ecc ecc)

le porzioni di codice sarebbero queste:

TORRE
#include <stdio.h>

int torre()
{
int n, i, tot, j, t;

for(n=0; n < 8; n++);{

for(i=0; i < 8; i++);{

tot==0;
for(j=0; j < 8; j++);{

tot = tot + 1;
t[n][i]= tot;
}

t[n][i]= t[n][i] *2;
}

}

}

ALFIERE
int alfiere()
{
int n, i, d1, d2, tot, alf;

for(n=0; n < 8; n++){

for(i=0; i < 8; i++){

for(d1=0; i < 8, i++){

for(d2=0; d2 < 8, d2++){

if(d2=d1 || d2=(8-d1)){

tot=tot+1;
alf[n][i]=tot;
}
}
}
}
}
}