grazie,ancora 2 domandine

per quanto riguarda l' array generato per metà in modo crescente e per metà a caso con numeri maggiori al max del precedente ,ho fatto così,è corretto?
codice:
void  creaarraypr(int *a,int dim,int diff){
int i;srand(time(NULL));int val=0;
for (i = 0; i < dim/2; i++){
    a[i]= (val=val + (rand ()% diff));
    }

for (i = dim/2; i < dim; i++){
    a[i]= val + rand (dim-val)%diff ;
    val++;
    }}
Altra cosa,mi ricordo che esiste la possibilità di far ritornare il codice da capo e essere eseguito,che codice implica?

Grazie in anticipo