|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
AIUTO!!! MI SPIEGATE CHE DEVO FARE???
Ragazzi devo assolutamente fare questo esercizio-programma ma non ho ben capito cosa mi chiede?!?!?
Devo ralizzare un algoritmo di somma di due vettori sparsi, memorizzati nel formato a coordinate. Nei test usare vettori di ordine 100, 200, 500, in cui solo il 5% degli elementi è non nullo. Generare a caso sia il valore di un elemento non nullo (un intero in 0,1,..,10) sia il suo indice. Usare la function rand() in <stdlib.h> per generare numeri casuali; per esempio, se numero_casuale è un int, la chiamata numero_casuale=rand()%11; genera un numero casuale intero (distribuzione uniforme) nell’insieme (0,1,2,..,10). Che significa????
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
L'esercizio ti spiega come generarti due vettori casuali e sommarli. Un vettore è sparso se gli elementi non nulli sono molto pochi, il tuo esercizio indica adesempio che ci sono il 5% di elementi non nulli. Se consideri vettori di 100 elementi, 95 elementi varranno zero, gli altri 5 saranno diversi da zero. Utilizzando la funzione rand ti generi 5 numeri casuali tra 0 e 99: questi saranno gli indici degli elementi non nulli. Poi per ogni indice ti generei un numero a caso tra 1 e 10 sempre con la funzione rand. In questo modo ti compili causalmente i due vettori, che andranno sommati, non so se l'esercizio richiede di utilizzare qualche particolare algoritmo per la somma, in genere per vettori/matrici sparse si possono adottare algoritmi un po modificati che danno migliori prestazioni in certe operazioni, ma non li conosco.
Ciao
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Quote:
Potresti un pò chiarimri la parte riguardante l'indice??? Che devo fare??? Devo quindi creare due array di grandezza 100??? (o meglio 500)
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Crei un array di 100 elementi. Poi devi sceglierti a caso quali indici saranno occupati da numeri non nulli. Per fare ciò fai un cilco for di lungezza pari a 5 (5 è il 5% di 100), e in ogni iterazione sfrutti la funziona rand per generarti un numero causale tra 0 e 99: questo numero rappresenta un indice in cui inserirai un elemento diverso da zero. Se la funzione rand ti restituisce un indice già uscito, lo puoi incrementare o decrementare fino a trovare un indice in cui non è gia stato inserito un numero non nullo.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Quote:
while (vett2[posizione]!=0) { posizione=posizione+1; } Dici che va bene?
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
Come concetto va bene, ma devi fare una piccola modifica perche se no puoi esaurire tutti gli indicidell'array senza trovarne uno libero: posizione = (posizione+1) % 100; in questo modo, con l'operazione di modulo, se arrivi all'indice 99 senza aver trovato un indice libero, riprendi a controllare a partire da zero. (Questo per vettori di cento elementi, per vettori di 500 elementi ovviamente sostituisci 500 con 100)
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Pianeta Terra
Messaggi: 281
|
Per costa sta quel % ???
Cmq grazie mille per le risposte!
__________________
LE AVVENTURE DI AL METALLER E CHELA FDM - IL FOTOROMANZO TRASH! When I'm walking a dark road... I am a man who walks alone... |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
n % m dà come il risultato il resto della divisione intera n:m. E' facile verificare che n%m è un numero compreso tra 0 e m-1. L'operazione di modulo quindi la puoi usare ogni volta che vuoi incrementare una variabile inmodo "circolare", cioè la variabile può assumere un valore massimo max-1, dopodichè ritorna al valore zero: 0, 1, 2,3,....max - 1, 0, 1, 2...max - 1, 0... Quindi, con l'operazione n = (n + 1) % max se n + 1 è minore di max ad n si assegna n + 1, altrimenti ad n viene assegnato zero.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:51.



















