|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Già hai avuto diverse spiegazioni. Tu però non sei stato preciso. Qual'è il numero massimo? L'array finale deve essere ordinato? Possono esserci numeri negativi? Float? Ecc...
Inviato da una supercazzola ed un Nexus 5 scappellato a sinistra.. con senso unico Ultima modifica di clockover : 01-02-2014 alle 16:19. |
|
|
|
|
|
#22 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
non ho mai detto che l'array deve essere ordinato ( quindi non mi serve l'ordinamento ).
faccio l'esempio per capirci. l'utente digita 7. il pc elabora così: ( 5 - 3 - 6 - 1 - 7 - 2 - 4 ) chiaramente dovrà generare tutti i numeri da 1 a 7 in maniera casuale-disordinata. |
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Guarda allora hai fatto un casino.
1 il titolo della discussione è completamente sbagliato 2 ci hai fatto intendere che bisognava generare questi numeri casualmente Soluzione (che già ti aveva dato un altro utente) : ti crei un array e lo mescoli. Inviato da una supercazzola ed un Nexus 5 scappellato a sinistra.. con senso unico |
|
|
|
|
|
#24 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
come faccio a mescolarlo.
scusatemi tanto |
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Ci sono tanti modi. Uno potrebbe essere quello di scandire l'array e a ogni iterazione ti generi un numero causale fino a N che chiamiamo M. Basta quindi scambiare il valore in posizione attuale con il valore in posizione M.
Inviato da una supercazzola ed un Nexus 5 scappellato a sinistra.. con senso unico |
|
|
|
|
|
#26 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
caro clockover con l'ultimo metodo che hai detto mi ritrovo la lista sempre con doppioni. NON FUNZIONA
|
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Vuol dire che lo implementi male. Non possono esserci doppioni se in una lista senza doppioni effettui degli scambi
Inviato da una supercazzola ed un Nexus 5 scappellato a sinistra.. con senso unico |
|
|
|
|
|
#28 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
ECCO IL PEZZO DI CODICE:
N=100000; int numeri[N]; //CARICA NUMERI IN ORDINE for (int i=0; i<N; i++){ numeri[i]=i+1; } //MESCOLA srand(time(NULL)); for (int i=0; i<N; i++){ numeri[i]=numeri[generaNumeri()]; } //GENERA NUMERO int generaNumeri(){ int numero=rand() % N; return numero; } |
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
L'istruzione
Codice:
numeri[i]=numeri[generaNumeri()]; |
|
|
|
|
|
#30 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
scusa mi ero dimenticato un pezzo.
for (int i=0; i<N; i++){ int casuale=generaNumeri(); numeri[casuale]=numeri[i]; numeri[i]=numeri[casuale]; } lo stesso non funziona !!! |
|
|
|
|
|
#31 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Anche in quel modo non stai effettuando uno scambio, pensaci bene.
|
|
|
|
|
|
#32 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
Ci sono tanti modi. Uno potrebbe essere quello di scandire l'array e a ogni iterazione ti generi un numero causale fino a N che chiamiamo M. Basta quindi scambiare il valore in posizione attuale con il valore in posizione M.
come interpretarlo ?? |
|
|
|
|
|
#33 | |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
Codice:
void swap(int * array, int i, int j){
.......
.......
.......
}
ps il prossimo codice che posti indentalo per piacere altrimenti non ti rispondo più |
|
|
|
|
|
|
#34 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
mostrami il codice. guarda che non mi trovo.
|
|
|
|
|
|
#35 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Cavolo, ti ha messo proprio il numero di righe delle istruzioni che servono, ci mancava solo che li metteva pure contati per i singoli caratteri, potremmo farci le parole crociate, un po' di impegno, su!
|
|
|
|
|
|
#37 |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21920
|
arsenico ti ricordo che come da regolamento di sezione non si fanno i compiti per gli studenti
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
#38 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
non è il fatto di fare i compiti.
il problema è che click over come anche alcuni hanno torto. pensano che funzioni ma non funziona. |
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
|
|
|
|
|
|
#40 |
|
Member
Iscritto dal: Sep 2010
Messaggi: 153
|
scusate tanto
mancava una riga di codice per funzionare. ecco la soluzione: for (int i=0; i< N; i++){ numeroArray = numeri[i];} così funziona perfettamente. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:57.












Cavolo, ti ha messo proprio il numero di righe delle istruzioni che servono, ci mancava solo che li metteva pure contati per i singoli caratteri, potremmo farci le parole crociate, un po' di impegno, su!








