Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156

    Cancella spazi con ricorsione

    Vorrei scrivere un programma che riceva in input una stringa con due valori "first" e "last", che indicano rispettivamente la prima e l'ultima casella dell'intervallo della stringa su cui operare, e restituisca la stessa stringa dopo aver cancellato gli spazi. Purtroppo non riesco ad arrivare ad un algoritmo decente. Una soluzione che ho pensato io :
    - considero come caso base un vettore di 2 elementi, se l'elemento di sinistra è uno spazio lo scambio di posto con l'elemento di destra. Poi richiamo la funzione ricorsiva sulla stringa di estremi first+1 e last. Cosi facendo però mi trovo ad annullare solo uno spazio per ogni volta che viene chiamata la funziona, dal momento che prima o poi si troveranno due spazi consecutivi di cui solo uno andrà via.

    Aspetto qualche consiglio, ancora meglio se in pseudo-codice...

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    non ho ben capito, gli spazi da cancellare sono solo in quell'intervallo?
    e la stringa da restituire è tutta o solo quella entro i limiti dell'intervallo?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Devono essere tolti gli spazi all'interno dell'intervallo e restituire tutta la stringa. Comunque non è tanto questo ciò che mi interessa....ipotizziamo che "first" coincide con l'indice del primo elemento della stringa e "last" con il tappo.

  4. #4
    Il primo pseudo-codice che mi è venuto in mente:
    codice:
    FUNZIONE elaboraStringa(stringa)
        stringaSplittata = split(stringa, "first");
        stringaSplittata = split(stringaSplittata[1], "last");
        stringa = stringaSplittata[0];
        nuovaStringa = "";
        FOR x=0 TO (numero caratteri presenti in stringa)
            IF (carattere[x] di stringa non è uno spazio)
                nuovaStringa += (carattere[x] di stringa);
            ENDIF
        NEXT
        RETURN nuovaStringa;
    Intendevi questo? Una cosa come lo split dovresti trovarla in tutti i linguaggi, ti popola un array con i pezzi di stringa divisi in base all'elemento che gli passi. Quindi elemento[1] contiene tutti i caratteri a destra del divisore, infatti non funzionerà se il divisore è presente più di una volta.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Ma ero interessato ad una funzione di tipo ricorsivo, come da titolo

  6. #6
    Azz mi dispiace, ho appena dato un'occhiata a cosa intendevi tu e mi è scoppiato un lobo temporale... avevo sottovalutato, non è roba per me quella.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Proprio nessuno può darmi una mano?

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.