Ho in una funzione 8 blocchi di codice di circa 50 righe ciascuno, esattamente identici, tranne che per un parametro iniziale:
if (sc->x!=sca->x+1 || sc->y!=sca->y) {
..blocco identico
if (sc->x!=sca->x-1 || sc->y!=sca->y) {
..blocco identico
if (sc->x!=sca->x || sc->y!=sca->y+1) {
..blocco identico
.
.
.
.
e via dicendo,per 8 volte, fino a coprire tutto l' intorno del punto (x,y)
Vorrei passare il valore di sca-> (che è quello che varia) come parametro di un' altra funzione, in modo da scrivere una volta il codice e richiamare 8 volte la funzione con parametro differente.
La struttura a cui appartiene *sca è fatta così
typedef struct NODE {
int x;
int y;
struct QUEUE *succ;
}NODO;
Se volessi affidare il codice ripetitivo ad una funzione chiamata INTORNO, come dovrebbe esserne il prototipo, contando che al momento dell' utilizzo dovrebbe essere:
INTORNO (x+1,y);
INTORNO (x-1,y);
INTORNO (x,y+1);
INTORNO (x,y-1);
INTORNO (x-1,y+1);
INTORNO (x+1,y+1);
INTORNO (x-1,y-1);
INTORNO (x+1,y-1);
e a seconda del parametro dovrebbe mettermi il valore giusto a destra di sca->
Spero di essere stato chiaro
Grazie
Ciao