Homepage  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


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Fondamenti di architettura e programmazione
 
ORALE HAUS: aiuto
Clicca QUI per vedere il messaggio nel forum
publi
Chi mi risponde a queste due domande?

- Descrivete la gestione della memoria, così come è implementata nella JVM, durante l'esecuzione di un programma Java

- Sviluppate una applicazione Java che legga da tastiera una serie di lunghezza non determinata di parole; ordini in modo crescente tali parole e visualizzi sullo schermo l'elenco ordinato.

Grazie mille...

:D :-D :) :-)

korn
il programma ORDINAPAROLE già esiste nell'area files, l'unica differenza è che in questo caso non sono 100 ma X parole da inserire, quindi invece di dichiarare l'array in questo modo:

code:
String[] parole = new String[100];


si fa cosi' (ci sono altri metodi, questo è uno):

code:
int quante = Integer.parseInt(JOptionPane.showInputDialog("Quante parole?")); String parole[] = new String[quante];


e poi esegui il ciclo di input come sempre:

code:
for (int i = 0; int < parole.length; i++) { // lettura dati da tastiera }


:)

publi
Così può funzionare?

import javax.swing.*;

class applicazione {
public static void main(String[] args) {

String vettore[] = creaArray (); //invocazione del metodo per la creazione del vettore

for ( int i=0; i<vettore.length; i++ ) //lettura da tastiera delle parole
vettore[i] = Double.parseDouble(JOptionPane.showInputDialog( null, "Scrivi la "+(i+1)+" parola"));

bubbleSort ( vettore ); //invocazione del metodo per l'ordinamento degli elementi

System.out.println ("Parole ordinate in senso crescente");
for ( int i=0; i<vettore.length ; i++ )
System.out.println ( vettore [i] );

System.exit ( 0 ); // termina il programma
}

//metodo che crea un array di n elementi di tipo double (numeri frazionari a doppia precisione)

public static double[] creaArray( int size ) {
String vettore[];
vettore = new String[size];
for ( int i=0; i<size ; i++ )
vettore[i] = 0; //inizializzazione di tutti gli elementi a zero
return vettore;
}

// ordina gli elementi dell'array utilizzando un algoritmo di ordinamento a bolle
public static void bubbleSort( double b[] ) {
for ( int pass = 1; pass < b.length; pass++ ) // primo ciclo for
for ( int i = 0; i < b.length - 1; i++ ) // secondo ciclo for
if ( ( b[ i ] > b[ i + 1 ] ) ) // confronto
swap( b, i, i + 1 ); // scambio
}

// metodo per lo scambio dei 2 elementi
public static void swap( double c[], int primo, int secondo ) {
double hold; // variabile temporanea per lo swap
hold = c[ primo ];
c[ primo ] = c[ secondo ];
c[ secondo ] = hold;
} }

:idea: :?: :!: :wink:

korn
eh, temo proprio di no!!!!
hai cercato di fondere DoubleSort e OrdinaParole eh???? :)

ok, ti dò la soluzione, ma prima:

DOVUTA PRECISAZIONE: il seguente programma non è opera mia, l'autore originale è WEBNOISE! io l'ho solo modificato per accettare un numero indefinito di parole e non 100 fisse come in origine.

:)

ecco il risultato:

code:
import javax.swing.*; public class Ordinaparole { public static void main(String[] args) { // creiamo il nostro array int quante = Integer.parseInt(JOptionPane.showInputDialog("Quante parole vuoi inserire?")); String a[] = new String [quante]; //vettore di 100 elementi di tipo Stringa //ciclo for per l'input delle x parole da tastiera for (int i=0; i<a.length ; i++ ) a[i] = JOptionPane.showInputDialog( null, "Inserisci la " + (i+1) + " parola"); //richiama il metodo per l'ordinamento a bolle ( bubbleSort ) //input il vettore (array) da ordinare bubbleSort( a ); String output =""+ "\n\nParole ordinate lessicograficamente\n"; // buffer stringa: inizializzazione e titolazione // **************** FILTRO ELIMINAZIONE DUPLICATI ***************************** for ( int i = 0; i < a.length; i++ ) if (a[i]!="~") output += "\n" + a[ i ]; //concatena le parole e le mette nel //buffer stringa: se trova il carattere ~ (duplicati) li ignora System.out.println(output); //visualizza le parole ordinate lessicograficamente System.exit (0); //esce } // ordina gli elementi dell'array utilizzando un algoritmo di ordinamento // a bolle (BubbleSort). //Vedi capitolo 7 libro Java - Fondamenti di programmazione Deitel&Deitel public static void bubbleSort( String b[] ) { for ( int pass = 1; pass < b.length; pass++ ) // primo ciclo for for ( int i = 0; i < b.length - 1; i++ ) // secondo ciclo for if ( (b[ i ].compareTo(b[ i + 1 ])==0)) // primo confronto: se esistono //parole uguali le contrassegna con ~ b [ i ] = "~" ; else { if ( (b[ i ].compareTo(b[ i + 1 ])>0) ) // confronto e ordinamento lessicografico swap( b, i, i + 1 ); // scambio } } // metodo che scambia due stringhe nell'array di stringhe public static void swap( String c[], int primo, int secondo ) { String temp; // variabile String temporanea per effettuare lo scambio temp = c[ primo ]; c[ primo ] = c[ secondo ]; c[ secondo ] = temp; } }


compilalo e vedi se funge!!

publi
Ok ti ringrazio veramente tanto...
Java sarà il mio incubo!
:? :? :? :?

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate