Programma con linguaggio c (III liceo)
Potete aiutarmi a fare questo programma per favore?!
-Genera casualmente N numeri, scegli casualmente un elemento del vettore e quindi effettua la partizione dell'array rispetto a quell'elemento (cioè elabora il vettore in modo tale che tutti gli elementi a sinistra dell'elemento scelto siano minori o, al limite uguali, mentre tutti gli elementi a destra siano sempre maggiori).
Grazie mille!!!
-Genera casualmente N numeri, scegli casualmente un elemento del vettore e quindi effettua la partizione dell'array rispetto a quell'elemento (cioè elabora il vettore in modo tale che tutti gli elementi a sinistra dell'elemento scelto siano minori o, al limite uguali, mentre tutti gli elementi a destra siano sempre maggiori).
Grazie mille!!!
Risposte
premessa: ricorda di scrivere nel main srand(time(NULL)); e di includere
genera un numero intero casuale tra a e b compresi
Ora scegli il valore minimo (min), il valore massimo (max) da dare ai tuoi elementi dell'array. poi
genera un numero intero casuale tra a e b compresi
Ora scegli il valore minimo (min), il valore massimo (max) da dare ai tuoi elementi dell'array. poi
for (i=0;i<N;i++) {a[i]=caso(min,max);} int ind=caso(1,N);//ind è la variabile che mi sceglie un indice a caso. a[ind] sarà il mio elemento base per la partizione
ora vediamo di mettere a sinistra elementi minori e a destra quelli maggiori.
conto quanti elementi sono piú piccoli di a[ind], allora metteró esso in quella posizione
creo un array d'appoggio b[N]
poi b[quanti_minori]=a[ind]
ora mettiamo a sinistra i piú piccoli
mettiamo a destra i piú grandi
conto quanti elementi sono piú piccoli di a[ind], allora metteró esso in quella posizione
q=0 for(i=0;i<N;i++) {if((a[i]<=a[ind])&&(i!=ind)) {quanti_minori++;}}
creo un array d'appoggio b[N]
poi b[quanti_minori]=a[ind]
ora mettiamo a sinistra i piú piccoli
j=0 for (i=0;i<N;i++) {if((a[i]<=a[ind])&&(i!=ind)) {b[j]=a[i]; j++;}
mettiamo a destra i piú grandi
j=quanti_minori+1; for (i=0;i<N;i++) {if((a[i]>a[ind])&&(i!=ind)) {b[j]=a[i]; j++;}