È corretta questa funzione?

di il
4 risposte

È corretta questa funzione?

void selection_sort (int dim, int v[])
{
   int i, i_min;
   for(i=0; i<dim;i++)
   {
      f(&v[i]);
	  for (i=0;i<dim;i++)
	  {
	     v[i_min]=v[0];
		 if (v[i]<v[i-min])
		 {
		    v[i_min]=v[i];
		 }
	  }
	  swap (*pv[i], *pv[i_min]);
   }
   \*stampa il vettore riordinato*\
   return v[i];
}
L'esercizio mi richiede l'algoritmo selection_sort che permetta di riordinare un vettore "sistemando" gli elementi uno per volta partendo da quello di indice più basso.
Grazie mille a tutti in anticipo per le risposte.

4 Risposte

  • Re: È corretta questa funzione?

    A cosa serve f()? dove inizializzi i_min?
  • Re: È corretta questa funzione?

    Ci sono parecchi errori al punto che viene da pensare che tu non l'abbia nemmeno compilato.
    Indipendentemente da quello che fa la funzione, come puoi ritornare un elemento dell'array se la funzione ritorna void (e soprattutto come fai a commentare "stampa il vettore riordinato"???)?
    Secondo me dovresti fare un passo indietro e provare a fare una funzione che stampa a video con delle printf() l'array che ricevi in input; quando avrai superato questo potrai pensare di scrivere una funzione di ordinamento.
  • Re: È corretta questa funzione?

    La funzione che dovevo scrivere andava messa in una libreria che creavo io al di fuori da quelle standard. Mi sembra in sto caso che il void vada bene, non devo restituire alcun valore.
    "stampa il vettore riordinato" è solo un'annotazione in più che ho messo io, non centra niente con il programma, il compilatore non lo legge.
    f() pensavo che servisse a creare un sottovettore ma è un errore mio, serve per passare alla funzione f il sottovettore che inizia da [...].
  • Re: È corretta questa funzione?

    La funzione che dovevo scrivere andava messa in una libreria che creavo io al di fuori da quelle standard. Mi sembra in sto caso che il void vada bene, non devo restituire alcun valore.
    Va bene, ma perchè nella funzione ritorni un valore alla fine?
    f() pensavo che servisse a creare un sottovettore ma è un errore mio, serve per passare alla funzione f il sottovettore che inizia da [...].
    Se la chiamata alla funzione f() non serve, perchè non la togli?
    Hai provato a compilare? Ripeto che, secondo me, faresti meglio a procedere per gradi e partire prima con una funzione che ti stampa il contenuto del vettore.
Devi accedere o registrarti per scrivere nel forum
4 risposte