Ci sono alcuni errori nel tuo codice, non rispetti la richiesta dell'esercizio; per altro trovo che l'esercizio sia anche scritto male, dire "restituire l'elemento minimo con valore inferiore a X" e poi restituire 2 invece di 1 o 0, non mi sembra il modo più chiaro di scrivere una consegna... e tralascio il resto.
Comunque, veniamo al tuo codice: i parametri vanno passati per riferimento, il ritorno è sbagliato, non puoi accedere a
matrice[-1][-1]
, la posizione non esiste.
Ciò che devi fare è restituire le due coordinate dell'elemento, o usare queste due coordinate per memorizzare -1, qundo il valore non è presente.
Il valore di X viene passato in input, non è un valore che devi decidere tu. Inoltre manca un parametro, il nome del file. E un altro errore è l'accesso agli alementi della matrice: hai due dimensioni, non solo una, devi accedere a (i, j).
Secondo me una firma corretta per la funzione all'esercizio 2 è:
C:
void getCoords(int **matrix, int row, int cols, char *file_name, int x_value, int *x, int *y);
Quindi il tuo codice per l'esercizio 2 sarà più qualcosa di simile a:
C:
void getCoords(int **matrix, int row, int cols, char *file_name, int x_value, int *x, int *y) {
{
int i=0,j=0;
for (i=0; i<righe; i++)
{
for(j=0; j<colonne; j++)
{
if(matrice[i][j] < x_value)
{
*x = i;
*y = j;
}
}
}
*x = -1;
*y = -1;
}
rimane sbagliato comunque: dalla consegna non mi sembra chiarissmo, ma secondo me vuole che restituisci le coordinate dell'elemento "immediatamente inferiore" a X; o in altri termini, quel numero che sottratto a X ti da una differenza inferiore rispetto agli altri. Penso questo guardando l'esempio che fa: per restituire (0,1) da quella matrice viene considerato come valore inferiore il numero 2, e non i numeri 0 e 1; quindi mi sembra verosimile.
In tal caso dovrai inventarti altro; il primo modo veloce che mi viene in mente, è tenere traccia in una variabile della differenza tra
matrix[i][j] - x_value
e ogni volta che questa differenza è minore della volta precedente, salvare le nuove coordinate x e y. Non so se sono stato chiaro, chiedi pure in caso contrario.
Fatto ciò dovrai scrivere su un file la matrice, con il separatore che vuole il tuo prof.
Puoi anche chiedere al tuo prof se è questo che intende, per levarsi il dubbio...
Per l'altro esercizio vediamo in seguito; anche qui non è esattamente chiara come consegna.