 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
[Prog Java] Domanda banale ... Clicca QUI per vedere il messaggio nel forum |
| Terrytop |
Stavo riguardando lo scritto di info generale (visto ke per l'orale devo portare i due programmini stampati ... ) e mi stavo dando da fare quando mi e' sorto un dubbio ... il pezzo dell'esercizio in questione e' questo: "Sviluppare un’applicazione Java che *cut*, legga da tastiera una serie di numeri interi positivi di lunghezza non nota a priori, terminata dal numero 9999, la memorizzi in una struttura di dati appropriata, ... "
io avevo usato un array, solo ke provando ora il programma mi son ricordato ke va dichiarata la lunghezza dell'array quando lo si istanzia, no ? pero' qua mi chiede una serie di numeri non nota a priori, quindi l'array.length la conosco solo dopo aver inserito i valori ... ho pensato a un vector o roba simile, solo ke (oltre a non saperlo usare) non sono nel programma, quindi dubito vengano richiesti nell'esame, no ?
In sostanza sapreste risolvere il pezzetto qua sopra usando gli array...?
Terrytop |
| 0m4r |
| gli array no, ma nemmeno vector (perchè anche li è richiesto di dare una dimensione), si dovrebbe usare una lista...almeno io lo farei con una lista... |
| TankJr. |
beh, il Vector può incrementare..
dalla javaDoc (java.util.Vector):
Vector(int initialCapacity, int capacityIncrement)
una soluzione un po' 'sporca' usando gli arrays potrebbe essere quella di copiare l'array in uno più grande quando è pieno ..ma è davvero un'obbrobrio! |
| webwarrior |
| E se mettessi il tutto in una string e usassi il magico StringTokenizer? |
| webwarrior |
StringTokenizer
D'altra parte, puoi anche usare String.split
PHP:
String[] elencoNumeri = "1 10 400 32 9 999".split("\s");
for (int x=0; x<elencoNumeri.length; x++)
{
System.out.println(result[x]);
}
|
| Terrytop |
Originally posted by webwarrior
E se mettessi il tutto in una string e usassi il magico StringTokenizer?
mi sa ke alla fine e' l'unica, con i normali array mi sa ke e' impossibile o cmq ne uscirebbe una cosa molto contorta ... e' ke io e le stringhe non abbiam proprio un buon rapporto eh ...
boh in ogni caso domani faccio l'orale e poi vi dico com'e' andata ...
Terrytop |
| webwarrior |
| Cmq mi sa che la soluzione "didattica" corretta è quella di Om4r. L'esercizio è il classico esempio di lista linkata, anche se però servirebbe sapere cosa devi fartene una volta che hai immagazzinato i numeri nella "struttura appropriata" |
| Terrytop |
Originally posted by webwarrior
Cmq mi sa che la soluzione "didattica" corretta è quella di Om4r. L'esercizio è il classico esempio di lista linkata, anche se però servirebbe sapere cosa devi fartene una volta che hai immagazzinato i numeri nella "struttura appropriata"
niente, una volta immagazzinati i dati e' semplicemente richiesto di ottenere i 3 valori maggiori ... niente di ke ...
il problema sta nel fatto ke penso ke nessun prof, per quanto sadico, metterebbe in un suo scritto un esercizio incentrato su roba ke non abbiam mai fatto ( di strutture dati abbiam visto solo gli array appunto ... )
sinceramente ho ancora molti dubbi a riguardo, anche perche' nello scritto il programma l'ho fatto (sbagliando) con un array .... eppure vedendo il voto sembra me l'abbia contato giusto uguale ... mmm ...
Terrytop |
| webwarrior |
Bah, così su due piedi me ne fregherei di array e altro e avrei 3 variabili
(sintassi a caso, giusto per rendere)
PHP:
int primo, secondo, terzo=0;
int buffer=0;
do
{
buffer=leggiNumero();
if (buffer>primo)
{
primo=buffer;
}
else if (buffer>secondo)
{
secondo=buffer;
}
else if (buffer>terzo)
{
terzo=buffer;
}
}
while (buffer!=0)
|
| holylaw |
oserei dire che e' sbagliato.. per esempio sa 11 10 9 e inserisci 20 ti rtrovi con 20 10 9... invece dovresti avere 20 11 10... ma e' un prob facilmente risolvibile con qualche controllo di piu'
:) |
| webwarrior |
Yep, hai ragione.
E' una piletta da 3 elementi:
PHP:
int primo, secondo, terzo=0;
int buffer=0;
do
{
buffer=leggiNumero();
if (buffer>primo)
{
terzo=secondo;
secondo=primo;
primo=buffer;
}
}
while (buffer!=9999)
Neanche 10 righe... :cool: |
| Terrytop |
Originally posted by webwarrior
Yep, hai ragione.
E' una piletta da 3 elementi:
yess, pero' cosi' dai per scontato ke i dati siano ordinati in modo crescente ...
esempio se metto 15, 12, 3 , 5 ... ecc... la condizione buffer>primo si verifica solo all'inizio e ti vengono restituiti 15 0 e 0 come massimi ... ;)
nel mio caso o risolvo ordinando l'array o piu' grezzo con tre cicli for e buonanotte ;)
Terrytop |
|
|
|
|