Numeri Palindromi

di il
6 risposte

Numeri Palindromi

Ciao a tutti, mi è stato assegnato questo algoritmo da svolgere, ma non riesco proprio ad intuire il procedimento.
"Sia assegnato il nome di un file residente su memoria di massa. Il file contiene una sequenza di numeri interi di cui non è nota la terminazione.
Individuare sulla sequenza i numeri palindromi:cioè quei numeri composti da cifre uguali nelle posizioni simmetriche rispetto alla cifra di posizione centrale(1221, 34543 sono palindromi, mentre 34544 e 2171 non lo sono).

La cosa che mi interessa è ricercare i numeri palindromi all'interno di una sequenza.
Nono dice la lunghezza di ogni numero palindromo, quindi mi da un pò di problemi questo fatto.
Grazie in anticipo.

6 Risposte

  • Re: Numeri Palindromi

    Allora ragionandoci puoi:
    Estrarre l'i-simo numero e controllare se l'i-simo numero+1 è maggiore di un'unità. Se lo è continui così col successivo, altrimenti controlli se è minore di un'unità. Se lo è continui altrimenti termini dicendo se è finita la sequenza del numero palindromo oppure non è mai iniziata.

    La logica da usare potrebbe essere questa, non so se sono stato chiaro.
  • Re: Numeri Palindromi

    Mmm,il fatto è che un numero è palindromo anche se è fatto in questo modo: 1771.
    Quindi non ha sempre cifre che si susseguono aventi valore più grande o più piccolo di uno .
    Poi come potrei sapere se è finita o mai iniziata?
  • Re: Numeri Palindromi

    La tua migliore opzione è senza dubbio quella di applicare gli elementari consigli di questo thread. Un valore numerico (considerato come privo di segno) è palindromo se e solo se è palindroma la stringa che lo rappresenta, ovviamente privata di tutti gli altri caratteri non numerici, incluso il carriage return normalmente incluso da talune funzioni di I/O.
    
        char buff[MAX_BUFF_SIZE];
        char *p;
        size_t len, j;
        char is_palindrome = 0;
        ...
        len = strlen(buff);
    
        if (len < 1)
        {
            /* Errore di lettura, uscita prematura */
        }
    
        len -= 1; 
        for (j = 0; j <= (len >> 1); ++j)
        {
            printf("%02d) %d - %d\n", j, buff[j], buff[len -j]);
            is_palindrome = (buff[j] == buff[len -j]);
            if (!is_palindrome)
            {
                break;
            }
        }
    
        printf("\n** La stringa immessa%se' palindroma. **\n",
               is_palindrome ? " " : " non ");
        ...
    
  • Re: Numeri Palindromi

    Quindi, secondo il thread che mi hai mandato, devo prendere tutta la sequenza e convertirla in caratteri.
    Una volta fatto ciò, devo compararla con la sua simmetrica(con la stessa stringa al contrario).
    Se ho capito, allora non è quello che mi serve, poiché io non devo vedere se tutta la sequenza di numeri é palindroma, ma solo parti di essa.
    Per esempio:
    La sequenza: 1221345254224 non è palindroma, ma 1221, 525, e 4224 lo sono.
    Non so se sono stato chiaro o se ho capito male la tua risposta.
  • Re: Numeri Palindromi

    Antares ha scritto:


    Non so se sono stato chiaro o se ho capito male la tua risposta.
    La seconda che hai detto.

    I tuoi numeretti sono già singolarmente sotto forma di stringa, nel momento in cui li leggi da un file di testo ASCII, come pare implicito nella descrizione del problema. Si suppone infatti che il file dati fornito non sia binario e abbia una struttura semplificata del genere:
    
    1221
    123456
    765567
    98089
    ...
    
    La lettura dal file avviene con una bella , come sempre.
    Si tratta quindi di verificare, per ogni singola riga letta dal file, se tale stringa risulta palindroma o meno (dopo avere eliminato tutti i caratteri non numerici, con particolare riguardo al terminatore di riga).

    Qualora la struttura del file fosse diversa per un arbitrio del docente, si tratterebbe unicamente di cercare i separatori nel buffer usando eventualmente una strtok(), ma nulla cambia dal punto di vista concettuale: alla fine si ottiene iterativamente ogni numero letto, già sotto forma di stringa, alla quale si applica il controllo di palindromia.
  • Re: Numeri Palindromi

    Ok, ora ho capito.
    Grazie della pazienza xD.
Devi accedere o registrarti per scrivere nel forum
6 risposte