Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182

    [C++] Funzione ricorsiva coppie alfabeto con uguale distanza

    Ho un problema (come al solito ) con un esercizio su una funzione ricorsiva:

    Si scriva in C++ una funzione ricorsiva che riceva almeno un array di caratteri (assumendo che contenga solo lettere dell’alfabeto minuscole) e la sua dimensione (supponendo che sia sempre PARI) e restituisca TRUE se è verificata la seguente proprietà. Si considerino coppie di elementi di cui il primo è nella prima metà dell’array, e il secondo è l’elemento di posto corrispondente nella seconda metà. Per ogni coppia, la distanza tra i due elementi nell’alfabeto inglese deve essere uguale. La distanza tra due lettere è un numero positivo, ed è definita come il numero di lettere che intercorrono tra essi nell’ordine alfabetico.
    Esempio: la funzione invocata su un array contenente la sequenza di caratteri ‘a’ ‘t’ ‘h’ ‘i’ ‘d’ ‘q’ ‘k’ ‘f’ dovrà restituire TRUE. Infatti la distanza tra il primo elemento della prima metà (‘a’) e il primo elemento della seconda metà (‘d’) è pari a 3 e così è per tutte le altre coppie di elementi corrispondenti (‘t’ --‘q’, ‘h’ -- ‘k’ e ‘i’-- ‘f’).
    Specificare quale deve essere la prima invocazione per la funzione.

    So che va postato il proprio codice.. ma stavolta non riesco a comprendere bene la traccia e vi chiedo di farmi "ragionare un pò" per iniziare a scrivere una bozza di codice ... in pratica mi chiede di verificare se in un array di char il primo elemento della prima metà(chiamiamolo array[i]) e il primo elemento della seconda metà (che dovrebbe avere posizione: array[dimensione/2 + i]) hanno la stessa distanza che hanno gli altri elementi...cioè nello spazio che intercorre tra il primo e secondo elemento devo verificare quante lettere ci sono?? Ma questa condizione non è sempre vera se l'array è PARI?!?

  2. #2

    Re: [C++] Funzione ricorsiva coppie alfabeto con uguale distanza

    Originariamente inviato da mistergks
    nello spazio che intercorre tra il primo e secondo elemento devo verificare quante lettere ci sono??
    Si nell'alfabeto.
    Originariamente inviato da mistergks
    Ma questa condizione non è sempre vera se l'array è PARI?!?
    L'array deve essere pari perchè ogni lettera deve essere confrontata solo con un carattere.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    ma nell'esempio le lettere sono in disordine! cioè tra la t e la q ci sono tre lettere ma in modo inverso!!viene prima la q!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    182
    Ho provato a buttare già qualcosa.... che ne dite? può andar bene? non mi compila ma penso che la logica ci sia no? magari c'è qualche piccolo errore..

    codice:
    bool distanzaAlfabetica(char a[], int dim){
         if(dim%2 != 0) //per far terminare subito la funzione in caso di stringa dispari
         return false;
         
         if(a[i]=='\0') //passo base
         return true;
         
         int distanza= a[0] - a[dim/2];
         if(a[i] - a[dim/2+i] != distanza) //passo ricorsivo
         return false;
         
         distanzaAlfabetica(a[], dim, i+1);
         
    }//chiusura funzione
    In pratica ..spiego quello che ho fatto:
    Ho messo la differenza tra i due caratteri che dovrebbero formare la coppia(il primo carattere della stringa e il primo carattere della metà della stringa) in una variabile intera chiamata distanza. Poi ho fatto una verifica: se tutte le coppie successive hanno la stessa "distanza" la funzione restituisce true altrimenti false.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.