 | |
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 |
[Laboratorio] Es. x il 28 - 11 Clicca QUI per vedere il messaggio nel forum |
gabry_deejay |
RAGA......... altri tre programmi da fare!!!!!!! e che programmi :
1-Scrivere la classe ConcatenaStringhe che lette due stringhe ne crea una terza contenente la loro concatenazione, il tutto usando solo i metodi charAt e setCharAt() della classe StringBuffer. Costruita la terza stringa stamparla a video.
Suggerimenti: costruire la stringa risultato come una istanza della classe StringBuffer di dimensione la somma delle lunghezze delle due stringhe passate in input. Usare quindi charAt() e setCharAt() per copiare le stringhe nella stringa risultato.
Esempio di esecuzione:
Stringa 1: Corso di Laurea in
Stringa 2: Comunicazione Digitale.
Stringa Concatenata: Corso di Laurea in Comunicazione Digitale.
------------------------------------------------------------------
2-Scrivere la classe Bizarre che letta una stringa in input ne converta in loco (cioè senza creare un'altra stringa e senza stamapre direttamente il risultato) il case (cioè cambi ogni carattere maiuscolo in minuscolo e ogni carattere minuscolo in maiuscolo). Stampare alla fine, cioè dopo la conversione, la stringa convertita.
Suggerimento: usare variabili di tipo StringBuffer.
Esempio di esecuzione:
Stringa da Convertire: TRentaTRE TRENTINI entrarono in TRento tutti e TRENTATRE TROTTERELLANDO.
Stringa Convertita: trENTAtre trentini ENTRARONO IN trENTO TUTTI E trentatre trotterellando.
------------------------------------------------------------------
3-Scrivere la classe StatisticaFrequenze che preso un testo in input stili un rapporto sulle frequenze con cui si presentano le varie parole all'interno del testo. Assumere che il testo contenga al più 2000 parole distinte (Nota questo non vuol dire che il testo contiene al più 2000 parole). La punteggiatura ammessa nel testo e che ovviamente non contribuisce al computo delle parole sono esclusivamente il punto e la virgola. Parole uguali ma con case diverso sono da considerarsi uguali, es. Casa e casa sono la stessa parola.
Suggerimenti:
usare due array uno per le stringhe (chiamato dizionario) e l'altro per le frequenze delle stesse, scansire per parole il testo, verificare la presenza della parola nel dizionario, se presente incrementare la corrispondente frequenza altrimenti aggiungere la parola nel dizionario e porre a uno la corrispondente frequenza.
la scansione del testo (contenuto in una stringa) alla ricerca di parole va fatta carattere per carattere considerando come terminatori delle parole lo spazio, la virgola ed il punto. Chi vuole ampliare le proprie conoscenze può vedere la classe StringTokenizer che è pensata proprio per questo tipo di lavoro.
Esempio di esecuzione:
Introdurre Testo da elaborare: Sopra la panca la capra canta, sotto la Panca la CAPRA crepa.
Frequenze
· sopra: 1
· la: 4
· panca: 2
· capra: 2
· canta: 1
· sotto: 1
· crepa: 1 |
gabry_deejay |
Opinioni:
1- Il primo Dovrebbe essere una pagliacciata......
2- Il coeff. di complessità incomincia ad aumetare
3- Pesante....ma non impossibile!!!!!! |
citrus |
Originally posted by gabry_deejay
Opinioni:
...
3- Pesante....ma non impossibile!!!!!!
mannaggia!!!!
sono due giorni che ci sclero!!!!
:wall: :wall: :wall:
questo è davvero una mazzata!!!!
qualcuno è già riuscito a farlo?????? |
ellegi |
Ma a voi la data dell'ultima sottoposizione cambia ?? :? :?
La mia nonostante sottoponga non cambia, rimane il giorno 11 novembre ??? :x :x :x |
foolish |
Originally posted by citrus
mannaggia!!!!
sono due giorni che ci sclero!!!!
:wall: :wall: :wall:
questo è davvero una mazzata!!!!
qualcuno è già riuscito a farlo??????
crea due array:
uno string per le parole ed uno int per le frequenze. Inizializza a zero quello delle frequenze.
Ora crea un istanza "stringbuffer" in cui ci inserirai come argomento la frase in input.
Da questo oggetto (che conterra' sia virgole che punti) eliminale con un'oppurtuno ciclo di for e degli if.
-- Analizza tutte le lettere della frase
-- Se: sono delle virgole O dei punti
-- Allora: trasformale in spazi.
Ora facciamo puntare un'istanza "stringtokenizer" a questa nostra nuova stringa,ottenuta con il passaggio precedente, avendo cura di inserire lo " " come oggetto di divisione tra i vari tokens.
Chi non si voleva fare lo sbattimento dell'eliminazione dei punti e delle virgole, inserisca come divisori " .,".
Ora che otterete (tramite lo stringtokenizer) le parole presenti nella frase controllate se sono state inserite nell'elenco.
-- Se: Ci sono ancora tokens
-- Allora: Analizzalo e
-- Se: è presente nell'array dedicato alle parole una parola uguale
-- Allora: incrementa la relativa frequenza
-- Altrimenti: inserisci la parola in elenco ed incrementa la freq.
cmd: .equals() NO ==
Ora fate stampare a video l'array delle parole e quello delle frequenze.
OK??!
:cool: |
citrus |
scusa ma l'array dizionario quando lo inizializzi che dimensione gli dai? |
EagleSpirit |
Originally posted by citrus
scusa ma l'array dizionario quando lo inizializzi che dimensione gli dai?
2000
(il limite delle parole che può contenere secondo le istruzioni dell'esercizio) |
foolish |
Originally posted by citrus
scusa ma l'array dizionario quando lo inizializzi che dimensione gli dai?
crea una variabile
final int MAX 2000;
in questo modo potrai cambiare semplicemente questo valore per aumentare la capacità del pgm. |
citrus |
azz.... è vero! non ci avevo fatto caso!!!
però ho ancora molti problemi prima di arrivare alla soluzione....
per esempio come si fa ad associare l'array frequenze all'array dizionario?
ex:
se io trovo la parola "ciao" alla posizione 3 dell'array dizionario come faccio a sapere quale posizione dell'array frequenze devo incrementare?
un altra cosa:
nell'esercizio 1 come faccio ad instanziare la stringa risultato (StringBuffer) se non ho ancora niente da metterci dentro?
in teoria bisogna partire dalla prima e modificarla aggiungendogli la seconda giusto (quindi non serve instanziarne una terza)?
...
il secondo per fortuna è stato una sciocchezza altrimenti mi sarei sparato un colpo.........
ps: sto giro però ci ha dato dentro con gli esercizi eh?
:D |
EagleSpirit |
Originally posted by citrus
azz.... è vero! non ci avevo fatto caso!!!
però ho ancora molti problemi prima di arrivare alla soluzione....
per esempio come si fa ad associare l'array frequenze all'array dizionario?
ex:
se io trovo la parola "ciao" alla posizione 3 dell'array dizionario come faccio a sapere quale posizione dell'array frequenze devo incrementare?
un altra cosa:
nell'esercizio 1 come faccio ad instanziare la stringa risultato (StringBuffer) se non ho ancora niente da metterci dentro?
in teoria bisogna partire dalla prima e modificarla aggiungendogli la seconda giusto (quindi non serve instanziarne una terza)?
...
il secondo per fortuna è stato una sciocchezza altrimenti mi sarei sparato un colpo.........
ps: sto giro però ci ha dato dentro con gli esercizi eh?
:D
per curiosità che sistema hai usato per il cambio di Case?
1. io ho inserito le due stringhe, poi ho calcolato le due lunghezze e ho inizializzato StringBuffer con setLength()
dopodichè l'ho riempito con le stringhe
2. i due array li associ usando lo stesso indice i
es. il ciclo trova la posizione i del vettore dizionario[i] occupata dal vocabolo "ciao"
frequenze[i] += 1 |
citrus |
Originally posted by EagleSpirit
per curiosità che sistema hai usato per il cambio di Case?
1. io ho inserito le due stringhe, poi ho calcolato le due lunghezze e ho inizializzato StringBuffer con setLength()
dopodichè l'ho riempito con le stringhe
2. i due array li associ usando lo stesso indice i
es. il ciclo trova la posizione i del vettore dizionario[i] occupata dal vocabolo "ciao"
frequenze[i] += 1
....) Ho utilizzato la classe Characther per verificare il case nel ciclo if e l'ho invertito poi usando StringBuffer......
for (i=0;i<s.length();i++)
{...}
1) ... è quello che sto facendo anch'io ma poi come fai a riempirle?
carattere per carettere con un ciclo for? (a me da un errore "...out of range 0" subito alprimo ciclo...)
2) e quando trovi la parola "ciao" per la seconda volta in un'altra posizione?
come fai a ricordarti in quale posizione dell'array frequenze hai incrementato il valore?
se lo fai allo stesso indice di ogni parola l'array di frequenze si riempirà con tutti 1 e avrà la stesso numero di posizioni dell'array dizionario..... |
Rocco.Li |
Citrus,
Per l'esercizio di conversione case usando lo stringbuffer, creare la sola istanza dell'oggetto non e' sufficiente:
StringBuffer miaStringa = new StringBuffer(int lunghezza = 100);
perche' creera una stringa con capacita massima di 100 caratteri ma lunghezza 0. Quindi devi anche impostare la nuova lunghezza:
miaStringa.setLength(lunghezza);
Se non lo fai ricevi un errore a runtime.
Ciao |
foolish |
Originally posted by citrus
....) 2) e quando trovi la parola "ciao" per la seconda volta in un'altra posizione?
come fai a ricordarti in quale posizione dell'array frequenze hai incrementato il valore?
se lo fai allo stesso indice di ogni parola l'array di frequenze si riempirà con tutti 1 e avrà la stesso numero di posizioni dell'array dizionario.....
infatti se l'array dizionario ha per esempio 156 posizioni prese in considerazione, anche l'array delle frequenze DEVE avere per forza 156 posizioni prese in considerazione.
Se tu associ alla posizione 0 una parola, assocerai alla stessa posizione anche la relativa frequenza.
Se "CIAO" si trova alla posizione 34 le frequenze relative a quella parola si troveranno alla posizione 34.
Per capire se una parola è già stata inserita bisogna necessariamente fare una ricerca sequenziale sull'array. Quindi nel caso sia stata trovata, incrementare l'array delle frequenze proprio con l'indice dell'array dizionario in quel dato istante. Se invece la parola non verrà trovata bisognerà inserire la parola in fondo all'array. |
supernova |
Raga, sono un po' in merda. Nel primo esercizio, quello della concatenazione delle stringhe, dice di usare setCharAt(). Ma che funzione ha?????
Mi sapete poi spiegare brevemente StringBuffer. Ho capito che è una stringa che si può modificare. Ma è giusto??? Grazie a tutti raga. Ciauz! |
citrus |
Originally posted by foolish
infatti se l'array dizionario ha per esempio 156 posizioni prese in considerazione, anche l'array delle frequenze DEVE avere per forza 156 posizioni prese in considerazione.
Se tu associ alla posizione 0 una parola, assocerai alla stessa posizione anche la relativa frequenza.
Se "CIAO" si trova alla posizione 34 le frequenze relative a quella parola si troveranno alla posizione 34.
Per capire se una parola è già stata inserita bisogna necessariamente fare una ricerca sequenziale sull'array. Quindi nel caso sia stata trovata, incrementare l'array delle frequenze proprio con l'indice dell'array dizionario in quel dato istante. Se invece la parola non verrà trovata bisognerà inserire la parola in fondo all'array.
...si ma capisci che così cade lo scopo del programma......
l'array frequenze conterrà 156 posizioni (esattamente tante quante il numero di parole della stringa) tutte valorizzate a 1......
....
non è difficile porca.... però sono bloccato in questo punto sul ragionamento logico........ |
citrus |
... poi un altra cosa:
perchè inizializzare l'array con 2000 posizioni che poi a scorrerle tutte ci si mette una vita.........
non sarebbe meglio definirlo così?
String[] dizionario = new String[stk.countTokens()];
così l'array si riempe dinamicamente di tante posizioni quante le parole inserite dell'utente...... |
citrus |
Originally posted by supernova
Raga, sono un po' in merda. Nel primo esercizio, quello della concatenazione delle stringhe, dice di usare setCharAt(). Ma che funzione ha?????
Mi sapete poi spiegare brevemente StringBuffer. Ho capito che è una stringa che si può modificare. Ma è giusto??? Grazie a tutti raga. Ciauz!
setCharAt serve per impostare un determinato carattere in una determinata posizione di una stringa (di tipo StringBuffer).
ha come argomenti (int, char) ovvero un intero che indica la posizione in cui si vuole inserire il carattere e il carattere in questione (char).
Pe l'esercizio 1 io ho creato due stringhe normali inserite dall'utente, poi ho creato un'istanza di StringBuffer e gli ho settato la lunghezza pari alla somma delle lunghezze delle due stringhe con l'istruzione
s3.setLength(s1.length() + s2.length());
a questo punto ho creato due cicli for che scorrono la prima e la seconda stringa carattere per carattere e che copiano il carattere alla posizione i nella stringa di destinazione (s3)
ex:
for (i=0;i<s1.length();i++)
s3.setCharAt(i,s1.charAt(i));
.....poi dovrai aggiunggere i caratteri della seconda stringa..... |
foolish |
Originally posted by citrus
...si ma capisci che così cade lo scopo del programma......
l'array frequenze conterrà 156 posizioni (esattamente tante quante il numero di parole della stringa) tutte valorizzate a 1......
....
non è difficile porca.... però sono bloccato in questo punto sul ragionamento logico........
:nono:
"ascolta" se una parola viene trovata tramite il metodo sequenziale, la sua frequenza viene incrementata. Con un semplicissimo IF non viene poi aggiunta nell'array. E già presente!
Una frase di 156 parole obbligherà il pgm a riempire 156 posizioni nell'array solamente se ha 156 parole diverse.
CON UNA BIRRA DAVANTI SI PROGRMMA MEGLIO ! ! !
Per l'esercizio della concatenazione ricordatevi di fare la somma della prima stringa con quella della seconda più 1:
s3.setLength(s1.length() + s2.length() +1);
con s3 che è un'istanza StringBuffer
infatti quando si legano le due stringhe bisogna aggiungere tra una e l'altra un carattere spaziatore; altrimenti l'ultima parola della prima e la prima della seconda saranno attaccate. |
supernova |
Dai raga che ce la facciamo a farli!!!! Vi offro a tutti simbolicamente una bella Guinness :birrozza: |
supernova |
Dai raga che ce la facciamo a farli!!!! Vi offro a tutti simbolicamente una bella Guinness :birrozza: |
citrus |
...quasi mi vergogno!!!! :oops:
mi ero letteralmente fossilizzato su un pensiero stupido che non mi faceva andare avanti!
alla fine ho mollato tutto, ho messo un po' di musica e dopo aver dormito un oretta mi sono svegliato 5 minuti fa con l'illuminazione!
e adesso in 2 minuti funziona tutto cazzo!!!!!!!!!!! :pc:
e pensare che ho sclerato per 2 giorni!!!!! :wall:
alla fine hai ragione foolish, che sia una birretta o una dormita (anche se anche una bella ciulata non ci starebbe male :D ) l'importante quando ci si blocca è riavviare il sistema e riprovare, prima o poi la soluziona viene!!!
bella li!!!!!! :D :D :D :D
adesso direi che una birretta è d'obbligo!
salute!
:birrozza: |
supernova |
Raga x quanto riguarda il primo esercizio, penso che l'errore che sto facendo sia nell'inizializzare StingBuffer, potete dirmi dove sbaglio??? Non ci sto più dentro. Mi stampa solo la seconda stringa!!!!
s1 = tastiera.readLine("Inserisci la prima stringa: ");
s2 = tastiera.readLine("Inserusci la seconda stringa: ");
...
video.print("La Stringa Concatenata e': "+s3); |
citrus |
Originally posted by supernova
Raga x quanto riguarda il primo esercizio, penso che l'errore che sto facendo sia nell'inizializzare StingBuffer, potete dirmi dove sbaglio??? Non ci sto più dentro. Mi stampa solo la seconda stringa!!!!
s1 = tastiera.readLine("Inserisci la prima stringa: ");
s2 = tastiera.readLine("Inserusci la seconda stringa: ");
StringBuffer s3 = new StringBuffer ();
s3.setLength(s1.length() + s2.length() +1);
for (i=0;i<s1.length();i++) {
s3.setCharAt(i,s1.charAt(i)); }
for (i=0;i<s2.length();i++) {
s3.setCharAt(i,s2.charAt(i)); }
video.print("La Stringa Concatenata e': "+s3);
... per forza, perchè prima riporti la prima stringa e poi ci sovrascrivi la seconda....
nel secondo ciclo for devi cambiare la posizione in cui vai ad inserire i caratteri della seconda stringa:
infatti devono trovarsi nella posizione "i" ma dopo quelli inseriti nel primo ciclo quindi
for (i=0;i<s2.length();i++)
s3.setCharAt(i+s1.length() ,s2.charAt(i));
...
a me così funziona, prova un po' poi fammi sapere,
ciao
citrus
:D |
supernova |
Ma bella Citrus!!!! Ora va tutto. Ieri avevo quasi intuito, facevo s3.setCharAt(s1.length() ,s2.charAt(i)); ma dovevo sommare i. Grazie Zio x l'aiuto. Sto giro li hanno fatti pesanti gli esercizi!!! |
supernova |
Ho un'ultima domanda su questo esercizio, mi stampa le stringhe attaccate nonostante io quando setto la lunghezza dello stringbuffer gli do +1. Io faccio così:
s3.setLength(s1.length() + s2.length() +1); |
citrus |
ok tu imposti la lunghezza considerando lo spazio però poi non lo aggiungi quindi la stringa risultato avrà un carattere null alla fine.
per ovviare devi aggiungere un carattere di spazio tra la prima stringa e la seconda (quindi tra il primo e il secondo ciclo).
secondo me però non è richiesto dall'esercizio (anche se farlo in effetti non costa nulla) perchè il testo dice
"costruire la stringa risultato come una istanza della classe StringBuffer di dimensione la somma delle lunghezze delle due stringhe passate in input.".
(qui non si dice di aggiungere 1.....)
...
comunque, che sia giusto o meno, non penso che sciocchezze come questa influiscano sulla valutazione dell'esercizio..... |
foolish |
stringa 1: Corso di
stringa 2: Comunicazione Digitale
stringa 3: Corso di Comunicazione Digitale.
Io lo spazio l'ho messo, e anche l'esempio lo richiede. |
Rocco.Li |
neanche io ho messo lo spazio !!!! |
supernova |
Mi fai un esempio di come aggiungere lo spazio in termine di codice???? Grazie Zio |
supernova |
Raga mi dovete troppo aiutare, io a sto giro non ho bello che capito un cazzo!!!!! |
ellegi |
non sei il solo :( |
supernova |
Raga non vi preoccupate, ho risolto il problema dello spazio!!!! |
foolish |
Originally posted by gabry_deejay
e come?????
hai la tua istanza StringBuffer che è lunga quanto la prima stringa, la seconda ed ha in più uno spazio per lo spazio.
quando hai inserito la prima stringa in StringBuffer
alla posizione seguente (la puoi anche recuperare con l'indice del for) a l'ultima usata per l'inserimento.
Poi continui come prima. |
gabry_deejay |
grazie foolish ......
a proposito.....ti mando una birretta |
foolish |
Originally posted by gabry_deejay
grazie foolish ......
a proposito.....ti mando una birretta
ci conto! |
[D]ani[J] |
cerchiamo di rimanere on topic ragazzi :) |
gabry_deejay |
ahhhhh sti DaniJ con la carica di
dsy newser!!!!!! |
gabry_deejay |
ok ragazzi......siamo punto e daccapo...il primo non mi viene nonastante:
import prog.io.*;
class concat {
public static void main (String[] args){
ConsoleInputManager in = new ConsoleInputManager();
ConsoleOutputManager out = new ConsoleOutputManager();
String s1,s2;
int i=0;
s1= in.readLine("Inserisci la prima stringa");
s2= in.readLine("Inserisci la seconda stringa");
StringBuffer s3 = new StringBuffer();
s3.setCharAt(s1.length() + s2.length() +1);
for (i=0;i<s1.length();i++) {
s3.setCharAt(i,(s1.CharAt(i)));
}//Fine primo For
for (i=0;i<s2.length();i++) {
s3.setCharAt(i+s1.length(),s2.CharAt(i));
}//Fine secondo For
out.println("La stringa concatenata e':" + s3);
}//Fine Main
}//Fine Class
Aiutoooooooooooooooooooooooooooooooooooooooooooo! |
supernova |
Zio ora ti dirò come ho fatto, a me va in pregio.
settaggio della lunghezza dello stringbuffer:
s3.setLength(s1.length() + s2.length()+1);
poi nel secondo for cambia così:
s3.setCharAt(i+s1.length()+1,s2.charAt(i));
Fammi sapere, dovrebbe andare. Ciauz |
supernova |
Tu il secondo lo hai fatto??? |
gabry_deejay |
ancora no....ma per il settaggio dello string buffer io ho fatto:
StringBuffer s3 = new StringBuffer();
s3.setCharAt(s1.length() + s2.length() +1);
è giusto?
Mi da un errore |
gabry_deejay |
che pirla che sono....spetta
bella zio.....forse sarai il mio nuovo amicone di vsempre e ti manderò una birrozza! |
gabry_deejay |
mi dà un errore nel primo for ancora!!!!!!!!!!!!!!!!!!!!!!!!!
Hel Me ZioooooooOOOOOOOooO |
supernova |
Definizione dello stringbuffer:
StringBuffer s3 = new StringBuffer ();
s3.setLength(s1.length() + s2.length()+1);
Primo for
for (i=0;i<s1.length();i++)
s3.setCharAt(i,s1.charAt(i));
Secondo for
for (i=0;i<s2.length();i++)
s3.setCharAt(i+s1.length()+1,s2.charAt(i));
E ora Exsurgi Magica Europa! |
supernova |
Zio appena hai fatto il secondo o il terzo fammi sapere, anche un pm è gradito! Qui ora provo a fare il secondo. |
gabry_deejay |
Exurgi...mi veniva!!!!!!!!!!!!!
(cazzo peccato che non puoi sentire!!!!!!!)
Bella Zio ............ adesso provo a fare il 2 o il 3 ...
inizio con il 2...va |
gabry_deejay |
superRoccoSiffredinova .... l'hai fatto?????? io ho provato una mezza cagata......ma mi da degli errori!!!!!!!
Sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori sempre errori Non ce la faccio più! |
gabry_deejay |
for (i=0;i<s.length();i++) {
if (Character.isLowerCase(s.charAt(i)));
s.setCharAt(i,Character.toUpperCase(s.charAt(i)));
else
s.setCharAt(i,Character.toLowerCase(s.charAt(i)));
}//Fine For
out.println(s);
Mi da due errori....il primo è else without if .... ma l'if c'è!
Il secondo è nella riga s.setCharAt del primo if e mi dice cannot resolve symbol! |
EagleSpirit |
Originally posted by gabry_deejay
for (i=0;i<s.length();i++) {
if (Character.isLowerCase(s.charAt(i)));
s.setCharAt(i,Character.toUpperCase(s.charAt(i)));
else
s.setCharAt(i,Character.toLowerCase(s.charAt(i)));
}//Fine For
out.println(s);
Mi da due errori....il primo è else without if .... ma l'if c'è!
Il secondo è nella riga s.setCharAt del primo if e mi dice cannot resolve symbol!
incomincia a togliere il punto e virgola in fondo all'if |
gabry_deejay |
si si ...quello non era un problema........
il problema è che mi da un errore se il codice lo metto così!
|
supernova |
Zio il tuo programma è giusto!!!!! BRAVO!!!!! Come dice EagleSpirit togli i ; in fondo all'if e poi all inizio del if metti le parentesi graffe e anche alla fine del if, lo stesso fai per l'else.
L'ho compilato ed è bello che va. EXSURGI NE MANCA SOLO UNO!!!!!!!! |
gabry_deejay |
si ma se lo eegui...non funzia! |
supernova |
sbagli nella dichiarazione dello stringbuffer, poi non ti serve dichiarare un'altra stringa. Fai così:
StringBuffer s = new StringBuffer (tastiera.readLine("Stringa da []
out.println(s);
Compilalo e dovrebbe andare. Se va fammi un Exsurgi!!!! |
gabry_deejay |
Bella che mi viene!!!!!!!
Germania, Gallia, Hispania, Italia,
Grecia, Britannia, Austria, Olanda
Russia Svezia Irlanda Scozia
Exsurgit magica europa
Calida potio, in multiplicatio
nerum me vinum ad circum malefitio
acinus malum cum attributio
crudum et cornum sanguinium subtratio
iuris sacellum elmam aluta purissimum ferrum
involucro vita
labellum anulum
uncula ermilla penelum ricinum
consor metalla
Exsurgit Exsurgit Exsurgit magica europa
Historia magistra vitae
dulcis in fundo
homo sire sine spe
si vis amari ama
est non plus ultra
proloquio omnia potest
Germania, Hispania, Gallia et Britannia, Grecia et Italia
divisa est
exsurgit europa
magistra vitae
magna legenda in caelo est
Exsurgit magica europa
Germania, Gallia, Hispania, Italia,
Grecia, Britannia, Austria, Olanda,
Russia, Svezia, Irlanda, Scozia
Exsurgit magica europa
Ecce pro forma ora et labora
est promemoria quid qui pro quo
honoris causa raptus omnibus
ob libertinus ab aeterno
Irlanda, Scozia, Russia et Olanda, Austria et Elvetia
divisa est
exsurgit europa
magistra vitae
magna legenda in caelo est
Germania, Gallia, Hispania, Italia,
Grecia, Britannia, Austria, Olanda
Russia Svezia Irlanda Scozia
Exsurgit magica europa |
gabry_deejay |
-1!!!!!!!!!! |
gabry_deejay |
Bella zio!...ora c'è il terzo!!!!!!!!! Pesante!!!!!!!! |
Fubetto |
ciao a tutti! anche questa volta aspettiamo fino all'ultimo x mandare gli es a malchiod!
x intuizioni, consigli domande e quant'altro i miei post sono sempre aperti!
:pc: :teach: :banana: |
[D]ani[J] |
ho unito il post di Fubetto a questo! Siete pregati di non aprire nuovi topic per gli esercizi !
Grazie!
|
ellegi |
io volevo solo capire il meccanismo e i metodi da usare per l'esercizio Statistica Frequenze !!! :( |
Cello81 |
A chi lo dici!
Non c'è nessuno che sappia fare il terzo esercizio?
Io sono in alto mare!
:? |
ellegi |
QUALCUNO CI AIUTIIIIIIIIIIIIIIIIIIII !!!! |
EagleSpirit |
1. inizializzazione canali, variabili ed array
2. inserimento stringa
3. StringTokenizer(stringa, " ,.")
4. Ricerca delle parole e riempimento array (for e if)
5. Stampa array dizionario[i] + frequenze[i] |
gabry_deejay |
eagle...io non ho capito che devo fare nei cicli for iniziali!!!!!!
io ho fatto:
final int max = 2000;
}//Fine Ciclo for |
EagleSpirit |
Originally posted by gabry_deejay
eagle...io non ho capito che devo fare nei cicli for iniziali!!!!!!
io ho fatto:
puoi benissimo eliminare la prima parte
fai subito con StringTokenizer mettendo come delimitatori " ,."
i 2 vettori dimensionali entrambi a 2000 |
gabry_deejay |
devo eliminare...... dal ciclo a fine ciclo ?????? |
gabry_deejay |
[]
Così?????????? |
gabry_deejay |
qualcuno mi aiutiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii |
foolish |
Originally posted by gabry_deejay
:nono:
il costruttore
StringTokenizer(string a,string b)
vuole come argomenti due string. Quindi inserirgli come argomento una StringBuffer è "logicamente" sbagliato per il compilatore.
QUINDI :
Salva il tuo StringBuffer in una stringa temporanea ed utilizza quest'ultima come argomento del costruttore.
String zibbi = new String(frase);
Ok? |
gabry_deejay |
ok e adesso che faccio???????? Siamo a 1 birra e mezza!!!!!! |
foolish |
Originally posted by gabry_deejay
ok e adesso che faccio???????? Siamo a 1 birra e mezza!!!!!!
Lo StringTokenizer ha la capacità di renderti una alla volta i "frammenti" di stringa ceh vengono divisi dai caratteri delimitatori inseriti come secondo argomento. Noi questi frammenti li chiameremo PAROLE.
Fai un ciclo che preleva dallo StringTokenizer una PAROLA alla volta. questa parola verrà salvata in una stringa temporanea che verrà confrontata con le parole già presenti nell'array Dizionario.
Se la parola viene trovata verrà incrementata la frequenza relativa a quella frequenza (ha lo stesso indice) altrimenti questa parola verrà inserita alla fine dell'array Dizionario.
Alla fine di ciò stampi l''array Dizionario e Frequenza.
NB La prima parola è meglio inserirla in automatico nell'array Dizionario, per evitare casini in fase di execute. Per confrontare bisogna ricordarsi di utilizzare il metodo equals() e non "==" che sarebbe sbagliato. |
gabry_deejay |
ok ora vediamo se riesco...al massimo.....ti chiedo dopo altre delucidazioni ......
Siamo a una birretta.....ma grande a sto giro!!!!!!!!
Ti piaciono le franziskaner?????? |
gabry_deejay |
foolish...ho dei problemi....dopo il for......
come faccio a dire Prendi il token e mettilo nel dizionario??????
Non ce la faccio più....e oggi è pure il mio compleanno diavolaccio!!!!!!!!!!! |
gabry_deejay |
sono arrivato a questo punto:
StringBuffer frase = new StringBuffer (in.readLine("Inserire il testo da eleborare :"));
String appoggio = new String(frase);
StringTokenizer stk = new StringTokenizer (appoggio ," .,");
for (i=0;i<appoggio.length();i++){
??????????????????????????????????????
} |
supernova |
Anch'io sono arrivato allo stesso punto e mi viene difficile continuare!!!! SIGH SIGH! AUGURI ZIO GABRY! :ola: |
gabry_deejay |
getterò la spugna alle 23.45
Cioè fra pochissimoooooooo tempo...... vi prego aiutatemi! |
supernova |
Foolish, sul libro c'è un esempio di StringTokenizer prende come argomento uno StringBuffer. Tu che l'hai fatto, se lo facciamo così canniamo, oppure come suggerisci tu è meglio mettere lo StringBuffer in una stringa d'appoggio? |
gabry_deejay |
io ho fatto così:
for (stk.hasMoreTokens();;)
{
String token = stk.nextToken();} |
gabry_deejay |
si ma non so se è giusto o se serve !!!!! Vieni nella chat di dsy?????
Lo facciamo li!!!!(il programma!) (non pensare male ZiO) |
supernova |
Raga ma se dizionario lo inizializzo a 0, e poi ci metto dentro la mia stringa? |
gabry_deejay |
supernova.....finitooooooooooooooooooooooo |
gabry_deejay |
un exurgi generale........ |
gabry_deejay |
Se mando un exurgi cavolo!!!!!!!!!!
Eh Eh Eh..........ole oho...... Zio controlla la posta
ti ho spedito un'immagine!!!!!!!!!!! |
supernova |
Bella Zio, sei troppo sgamato, ora bisogna convertire i punti e le virgole in spazi. |
gabry_deejay |
ora me ne vado.....basta.....non ce la faccio più!!!!!!!!!!!!!!!!!
Ciao Zio Rocco Sifferdi
fado a festeggiare!!!!!!!!!!!!!!!!!!!!! |
supernova |
Si, bella ci lavorerò su e ti farò sapere! |
supernova |
E anche questi sono finiti! Che faticaccia! |
gabry_deejay |
Come avevo detto a pagina 1......il terzo era pesante...ma non
impossibilie!
Anche questa volta i buoni hanno vinto di nuovo!!
Ringrazio tutti quelli che mi hanno aiutato.......e non..... |
alfoguasta |
import prog.io.*;
...}
cosa ce che nn mi viene??? |
spenk.85 |
Scusate, ma per la soluzione dell'esericizio 1) dice:
"la scansione del testo (contenuto in una stringa) alla ricerca di parole va fatta carattere per carattere considerando come terminatori delle parole lo spazio, la virgola ed il punto."
Di conseguenza non si dovrebbe usare la classe StringTokenizer, che divide sostanzialmente il testo in parole, ma bisogna controllare carattere per carattere!
O sbaglio?
utilizzando la StringTokenizer ce la si fa in due min, caratere per caratere è uno sbattimento non indifferente! |
spenk.85 |
programma fatto, naturalmente utilizzando la StringTokenizer |
ciops |
adesso basta che lo posti :roargh::roargh::roargh: |
spenk.85 |
lo posto nel topic aperto proprio sul ese delle freq |
|
|
|
|