Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    [JAVA] Inversione stringa

    Ciao a tutti ho un problema con cia'va ... allora premettendo che nn so praticamente nulla di questo linguaggio vi propongo una specie di problema... l'inversione di una stringa.. praticamente devo prendere una stringa dall'input.. e leggendo carattere per carattere metterlo su una pila... poi devo invertire la pila...
    Dovrei seguire uno schema di realizzazione predisposto..

    Nn badate agli errori di programmazione.. diciamo che tipo uno pseudo-codice..

    public string inverti()
    { 'creo il metodo inverti

    char b, str[];
    double i, j = 0;

    do {
    temp = (char) System.in.read(b); 'leggo il carattere da input e promuovo variabile
    pila.push(temp); 'aggiungo il valore alla pila
    i++;
    } while temp <> "/n"; 'fino a che nn si preme invio (si fa così?)
    str = new char[i];


    do {
    str[j]= pila.top(); 'risalgo al primo valore della pila e lo metto nell'array
    pila.pop(); 'cancello il primo valore della pila
    j++
    } while pila.vuota()<>true; 'controllo se la pila e' vuota
    return str;
    }

    Ora considerando che nn so creare la pila.. so solo formalmente che cosa e' e come funziona... e considerando che i metodi richiamati con pila.(metodo)... sono:

    public boolean vuota();
    public vuoid push(char e);
    public char top();
    public void pop();

    come posso implementare questa cosa... dalla costruzione della pila all'arrangiamento con il programma....

    help me!

    Grazie a tutti!



    Uno che sta' imparando

  2. #2
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Ma cos'e' un esercizio?
    Devi per forza leggere carattere per carattere?
    In questo caso la pila devi implementarla tu, o puoi usare le classi di java?
    Ciao,
    Lorenzo

  4. #4
    Utente di HTML.it L'avatar di pgm
    Registrato dal
    Apr 2002
    Messaggi
    1,281
    :quote: date una mano al povero cristo di sidin

  5. #5
    Originariamente inviato da pgm
    up
    diciamo che e' un esercizio... la lettura dovrebbe essere a posto.. il mio problema + grave e' la pila.. e i medoti sotto riportati!

  6. #6
    Utente di HTML.it L'avatar di ghinz
    Registrato dal
    May 2001
    Messaggi
    211
    Ciao, premetto che:
    - sono dieci anni che non implemento una pila
    - ho fatto tutto in fretta

    Per implementare una pila come serve a te direi che puoi usare la classe StringBuffer come base, valla a vedere nella documentazione del jdk.

    Questa potrebbe essere una prima grezza implementazione della classe Pila, ripeto è scritta in fretta e quindi non tiene conto delle possibili condizioni di errore, comunque può essere un punto di partenza...
    codice:
    class Pila {
    
    	private StringBuffer buffer;
    
    	// crea nuova pila
    	public void Pila() {
    		buffer = new StringBuffer();
    	}
    
    	// aggiunge carattere
    	public void push(char c) {
    		buffer.append(c);
    	}
    
    	// carattere in cima alla lista
    	public char pop() {
    		int pos = buffer.length()-1;
    		char c = buffer.charAt(pos);
    		buffer.deleteCharAt(pos);
    	}
    
    	// vuota la pila (la ricrea)
    	public void vuota() {
    		buffer = new StringBuffer();
    	}
    
    	// non mi ricordo a cosa serve... :(
    	public void top() {
    	}
    
    }
    Ciao
    ghinz

  7. #7
    per i metodi perfetto avevo già trovato (top raggiunge la cima della pila)... ora il prob e' vedere se il programma potrebbe andare (quello scritto nel primo post per intenderci)... ma il comando per creare una pila? e il richiamo e' esatto?.. cmq ci stò lavorando! Grazie mille per disponibilità!

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    2,894
    Basta che ti fai due cicli for che prendeno i caratteri e li rimettono in una nuova stringa all'inverso... Molto semplice... :gren:

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    La pila e' una struttura dati che ti permette di memorizzare e prelevare i dati in successione, con la particolarita' che il primo elemento che prelevi e' l'ultimo elemento che hai inserito, un po' come se tu dovessi impilare dei piatti... da li il nome.
    Un'impementazione veloce veloce potrebbe essere questa:
    codice:
    public class pila {
    
      private final int MAX = 256;
      private char store[] = new char[MAX];
      private int cursore = -1;
      
      public boolean svuota() {
        cursore = -1;
      }
    
      public char push( char c) {
        if( !piena()) {
          cursore++;
          store[cursore] = c;
        }
      }
    
      public char pop() {
        if( vuota()) return null
        else return store[cursore--];
      }
    
      public char top() {
        if( vuota()) return null
        else return store[cursore];
      }
    
      public boolean vuota() {
        return cursore == -1;
      }
    
      public boolean piena() {
        return cursore == (MAX-1);
      }
    }
    La differenza tra i metodi top e pop e' che top restituisce il dato in cima alla pila, senza cancellarlo.
    Ciao,
    Lorenzo

  10. #10
    Giusto!!!:quote:

    Parti dalla lunghezza della stringa e usi un incremento negativo finchè non l'indice non diventa 0!!!
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.