Bisogna che tu passi alla funzione matching migliore i valori sia della colonna che delle righe della matrice costellazione , perche se tu hai una cost [3 ,1] o [3,2] o [4 ,2] ?
e poi dai alle variabili dei nome che hanno senso cosi non si capisce niente
io chiamo : c => il numero di righe e colonne della matrice cielo
NB : Se la matrice cielo è quadrata basta passare solo la c altrimenti
dovresti passare alla funzione due valori come sto facendo di seguito
per la matrice costellazione
col_cost => numero di colonne della matrice costellazione
row_cost => numero di righe della matrice costellazione
Adesso non ricodo in C come si passano le matrici . Io assumo che tu lo sappia fare.
Prendo per buono che int *a[] sia l'intera matrice cielo e che int *b[] sia l'intera matrice costellazione. Anche se mi pare che come le hai dichiarate no sia giusto. Poi quste cose le aggiusti tu.
Io ti do la logica di come fare
Quindi io farei così :
void matching_migliore (int *a[] , int *b[] , int c , int col_cost , int row_cost)
{
int iCol , iRow , punteggio_max, punteggio, indiceRow , indiceCol;
// setta tutti i valori a zero prima come hai fatto con punteggio_max
punteggio_max=0;
for (iRow=0 ; iRow < (c - row_cost) ; iRow++)
{
for (iCol=0 ; iCol < (c - col_cost) ; icol++)
{
punteggio=punteggio_migliore (a , b , c , col_cost , row_cost , iCol , iRow );
if (punteggio>punteggio_max)
{
punteggio_max=punteggio;
indiceRow=iRow;
indiceCol=iCol
}
}
}
StampaRisultato(indiceCol , indiceRow) ; // ti fai sta funzione che stamapa i valori della matrice cielo con i valori idiceCol , indiceRow che sono il punto in cui parte la matrice bestmatch
}
La funzione punteggio migliore si trasforma cosi ;
int punteggio_migliore (int *a[] , int *b[] , int c , int col_cost , int row_cost , int iCol , int iRow)
{
int iC, iR , n_caratteri_uguali;
n_caratteri_uguali=0;
for (iR=iRow ; iRow < row_cost ; iR++)
{
for (iC=iRow ; iCol < col_cost ; iC++)
{
if (a[iR][iC] == b[iR][iC])
n_caratteri_uguali++;
}
}
return n_caratteri_uguali;
}
NB . ci saranno sicuramente errori di sintassi perchè non uco piu il C quindi non l'ho provato.
volevo solo darti solo un consiglio su come fare dal punto di vista della logica dle programma
poi l sintassi te la vedi tu