| V I S U A L I Z Z A D I S C U S S I O N E |
| Exels |
Inserito il - 28/04/2005 : 17:27:26 Salve eccomi di nuovo... Dovevo fare un progetto in linguaggio ANSI C; il testo era il seguente....
"Scrivere un programma ANSI C che acquisisce una sequenza di n numeri non necessariamente distinti e stabilisce se nella sequenza esiste un elemento di maggioranza, cioè un numero che compare almeno n / 2 volte"
Io l'ho scritto e funziona correttamente... gli faccio creare un'array e dopo aver inserito i numero, con degli algoritmi di ordinamento gli faccio ordinare come suddetto, e faccio apparitre il numero che appare N/2 volte... Però quando ho fatto vedere il beta version al prof lui mi ha detto..."lei è sicuro che l'ordinamento sia il miglior modo di risolvere questo problema???" insomma dovrei utilizzare altri algoritmi, sincermanete pensavo ad un albero rosso/nero, però guardando di sfuggita la situazione, mi sembra che il mio albero venga sbilanciato e che per risalire il mio albero, non sia molto facile.... C'è qualcosa che mi sfugge... Qualcu8no può aiutarmi????
COMUNQUE IL MIO PROGRAMMA FUNZIONAVA CORRETTAMENTE E CREDO CHE SIA IL MIGLIO MODO PER RISOLVERE IL PROBLEMA... ma chi decide è il prof
|
| 15 U L T I M E R I S P O S T E (in alto le più recenti) |
| mrluglio |
Inserito il - 29/04/2005 : 13:16:22 Citazione: Messaggio inserito da nicux
ok, ma a questo punto dicci quali sono le strutture dati che puoi utilizzare e vediamo qual'è il modo migliore per risolvere il tuo problema
infatti! |
| nicux |
Inserito il - 29/04/2005 : 12:33:21 ok, ma a questo punto dicci quali sono le strutture dati che puoi utilizzare e vediamo qual'è il modo migliore per risolvere il tuo problema |
| Exels |
Inserito il - 29/04/2005 : 12:04:30 Raga vi ringrazio dell'aiuto, però questo è un progetino per Algoritmi e strutture dati...
TNK |
| nicux |
Inserito il - 29/04/2005 : 10:17:22 cmq anche a me era venuto il dubbio, poi ho letto il 3d che precedeva questo: http://www.laureateci.it/forum/topic.asp?TOPIC_ID=3258 |
| mrluglio |
Inserito il - 29/04/2005 : 09:48:10 Citazione: Messaggio inserito da Chilavert
In effetti sta nella sezione "Programmazione", ma potrebbe tranquillamente essere un "progetto di Algoritmi I". L'ho visto come traccia in molti siti di università diversi da Bari...
e allora concordo con nicux. tanto vale usare una tabella hash.... key=numero value=occorrenza |
| Chilavert |
Inserito il - 29/04/2005 : 09:40:48 In effetti sta nella sezione "Programmazione", ma potrebbe tranquillamente essere un "progetto di Algoritmi I". L'ho visto come traccia in molti siti di università diversi da Bari... |
| nicux |
Inserito il - 29/04/2005 : 09:37:54 Citazione: Messaggio inserito da lacrijux
Citazione: Messaggio inserito da nicux
io opterei per una tabella hash, in cui il numero è la chiave e l'occorrenza il valore
bella come soluzione, ma penza che è un esame di programmazione..,.
ne sei proprio sicuro?
|
| mrluglio |
Inserito il - 29/04/2005 : 00:24:58 Una domanda: ma da quando a programmazione si usano gli alberi??? E poi effettivamente, se puoi usare gli alberi tanto vale usare una tabella hash che ti spicci!! |
| mrluglio |
Inserito il - 29/04/2005 : 00:22:26 Citazione: Messaggio inserito da lacrijux
vettore di numeri interi a=[...]
struttura occorrenza{ int numero int occorrenze }
b=[] vettore di occorrenza
insomma per ogni numero diverso crei una occorrenza, per i numeri di "a" uguali incrementi la corrispondente nel campo occorrenze.
mi sono spiegato? anzi "è chiaro?"
io lo farei senza struct.
vettore A[] numeri vettore B[] occorrenze. (inizializzalo a null) 1.Acquisici il numero 2.ricerca il numero nel vettore A 3.se non esiste, inseriscilo 4.poni i = indice del numero nel vettore A 5.se B[i] è null ponilo a 1, altrimenti incrementalo. 6.ripeti da 1. 7.ricerca il numero di occorrenze pari a n/2 in B. fine
più chiaro di così! questo basterà per un esame di programmazione credo... (Spero di non aver scritto cacchiate...    ) |
| lacrijux |
Inserito il - 28/04/2005 : 22:27:14 Citazione: Messaggio inserito da nicux
io opterei per una tabella hash, in cui il numero è la chiave e l'occorrenza il valore
bella come soluzione, ma penza che è un esame di programmazione..,. |
| nicux |
Inserito il - 28/04/2005 : 22:25:24 io opterei per una tabella hash, in cui il numero è la chiave e l'occorrenza il valore |
| lacrijux |
Inserito il - 28/04/2005 : 22:12:19 vettore di numeri interi a=[...]
struttura occorrenza{ int numero int occorrenze }
b=[] vettore di occorrenza
insomma per ogni numero diverso crei una occorrenza, per i numeri di "a" uguali incrementi la corrispondente nel campo occorrenze.
mi sono spiegato? anzi "è chiaro?"
|
| Chilavert |
Inserito il - 28/04/2005 : 20:12:24 il programma lo puoi strutturare così: l'acquisizione degli n elementi distinti lo fai in una lista, e l'inserimento lo fai già in maniera ordinata. In questo modo, hai il vantaggio dell'infinitezza della struttura dati e del fatto che non devi ordinare il vettore. Poi il resto è uguale a quello che hai fatto tu. Di più, nin zò... |
| Exels |
Inserito il - 28/04/2005 : 20:09:03 sarebbe creare due alberi che lavorano in contemporanera??? perchè io lo devo risolvere con un algoritmio.. ma devo capirlo bene prima.. |
| rat86 |
Inserito il - 28/04/2005 : 18:34:33 un altro modo potrbbe essere, quello di calcolare il numero che compare + volte, con un vettore cha calcoli le occorenze, vedi quello che compare + volte, e vedi se compare + di n/2 volte |