Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    14

    [c]permutare valori di un array

    Ciao a tutti....dovrei permutare i valori contenuti in un array di dimensione n...
    vorrei usare un ciclo in cui richiamo per n volte la funzione rand(), ma come faccio a farmi restituire dalla rand() una sequenza casuale da 0 a n-1 senza ripetizioni da usare come indici per prelevare i valori dall'array dato e inserirli in un array ausiliario?
    cioè...l'idea è questa:
    codice:
    void permutaVet(int v[], int n){
    	int temp[n];
    	int j=0;
    	while(j<n){
    		int index=rand()%n;
    		temp[j]= v[index];
    		j++;
    	}
    	int i;
    	for(i=0; i<n; i++){
    		v[i]=temp[i];
    	}
    	return;
    }
    solo che qui la rand() capita che mi restituisce più volte lo stesso indice, invece io vorrei indici distinti in ogni chiamata...Aiuto!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    14
    Ok...risolto!
    ho capito che con la funzione random non posso evitare le ripetizioni e quindi ho aggiunto un vettore di flag per segnarmi quale valore è già uscito...
    posto la mia soluzione per chi è interessato al problema.

    codice:
    void permutaVet(int v[], int n){
    	int temp[n],ind[n];
    	int j;
    	for(j=0;j<n;j++)
    		ind[j]=0; 
    	j=0;
    	while(j<n){
    		int index=rand()%n;
    		while(ind[index]!=0){
    			index+=1;
    			if(index==n){
    				index=0;
    			}
    		}
    		ind[index]=1;
    		temp[j]= v[index];
    		j++;
    	}
    	int i;
    	for(i=0; i<n; i++){
    		v[i]=temp[i];
    	}
    	return;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.