L'istruzione
i++
alla sesta riga non serve, in compenso se vuoi che la procedura funzioni anche in caso in cui valore non sia contenuto in lista potresti modificare il codice in questo modo:
C:
int elimina(int lista[], int dimensione_array, int valore)
{
int i;
for (i = 0; i < dimensione_array; i++)
if (lista[i] == valore) {
for (; i < dimensione_array - 1; i++)
lista[i] = lista[i + 1];
return dimensione_array - 1; // ho cancellato un elemento
}
return dimensione_array; // non ho cancellato niente
}
Nel thread
immediatamente sotto a questo c'è un'implementazione simile che cancella tutti i valori invece che solo il primo. Comunque, consiglio a
@Barcellona8 di postare un po' di codice. Non perché non siamo capaci di aiutarti altrimenti, ma per una questione di rispetto verso chi è disposto ad aiutarti. Capisco che è un esercizio scolastico e non vuoi farti beccare a copiare da internet, ma proprio perché è un esercizio e non una verifica non dovrebbe esserci niente di male a chiedere aiuto... a patto che sia un aiuto e non un copia&incolla.
Hai trovato gente che non si fa problemi a scriverti le soluzioni complete, puoi approfittarne per fare copia&incolla e vedere finché dura oppure puoi provare ad usare il forum come supporto all'apprendimento, ulteriore alla scuola. Nel thread dove chiedevi aiuto su come
criptare e decriptare una stringa ti sei beccato un codice pronto da copia&incollare e non eri comunque autonomo nell'applicarlo sul tuo array bidimensionale o nel costruire la funzione inversa (che poi non serviva nemmeno). In generale su questo forum siamo più propensi a fornire aiuto leggendo un tentativo di soluzione dell'utente e spiegandogli dove ha sbagliato; poi vabbé, se l'utente non riesce ad arrivare alla soluzione, come hai già notato, non ci facciamo troppi scrupoli a postare tutto quanto. Non voglio sembrare arrogante, ma se vuoi imparare troverai gente disposta a spiegare, se vuoi copiare sappi la pacchia dura finché dura.