Il numero è palindromo?

di il
2 risposte

Il numero è palindromo?

Salve a tutti, premetto che sono nuova su questa piattaforma e scusate se non saprò utilizzarla al meglio!
Da poco ho intrapreso il mio percorso in programmazione C e mi sono imbattuta in un esercizio che richiedeva di creare una stringa di codice per verificare se il numero dato dall'utente fosse palindromo o no.
Il mio approccio all'esercizio è stato quello di creare due array, al primo array far leggere il numero inserito ed ho cercato di far leggere e stampare il secondo array al contrario e successivamente compararli.
In questi ultimi passaggi ho riscontrato alcune difficoltà e vi sarei grata per una mano.
Ecco la mia soluzione
#include <stdio.h>

int main() {

int numero, i, j;

printf("Il numero da verificare deve avere quattro cifre.\n");
printf("Digita il numero: \n");
scanf("%d", &numero);
printf("Il numero digitato è: %d\n", numero);

int numero1[1];
for (i=0; i<1; i++)
numero1=numero;
for (i=0; i<1; i++)
printf("%d \n", numero1);

// come si stampa un array al contrario
int numero2[1];
numero2[1]=numero;
for (j=0; j<1; j++)
printf("%d \n", numero);

getchar();

if (i==j)
printf("Il numero è palindromo\n");
else printf("Il numero non è palindromo");
}

2 Risposte

  • Re: Il numero è palindromo?

    Come vedrai nel regolamento devi usare i tag code per postare correttamente il codice altrimenti apparirà confuso.

    Comunque ti posso anticipare, da quello che si legge, che il codice con gli array non è corretto (che senso hanno quelle for?).

    Parti dal numero e suddividilo nelle sue cifre con semplici operazioni aritmetiche e ottieni il numero scritto al contrario usando quelle cifre. Poi confronti l'originale e l'invertito.
  • Re: Il numero è palindromo?

    Quando sei alle prime armi scrivi codice che ti mostra se procedi correttamente.

    Il codice seguente non contiene cicli e funziona solo con numeri a 4 cifre, ogni riga è commentata perché il codice va capito passo passo, più semplice non si può.
    Il problema si può risolvere in modi deversi, ho scelto la scomposizione in matrice, perché lo hai proposto tu.
    
    #include <stdio.h>
    
    int main() {
    
        int numero, i, controllo = 0;
        int numero1[4]; // spazio per 4 interi indicizzati da 0 a 3
    
        printf("Il numero da verificare deve avere quattro cifre.\n");
        printf("Digita il numero: ");
        scanf("%d", &numero);
        printf("\nIl numero digitato e': %d\n\n", numero);
    
        // scomposizione in matrice es: se ho inserito 1234
        numero1[0] = numero / 1000; // divido per mille per avere la prima cifra di 1234 (1)
        numero %= 1000; // il resto della divisione di 1234/1000 mi da 234
        numero1[1] = numero / 100; // divido per 100 per avere la prima cifra di 234 (2)
        numero %= 100; // il resto della divisione 234/100 mi da 34
        numero1[2] = numero / 10; // divido per 10 per avere la prima cifra di 34 (3)
        numero %=10; // il resto della divisione di 34/10 mi da 4
        numero1[3] = numero;
    
        // controllo scomposizione
        for (i=0; i<4; i++){
            printf("%d\n", numero1[i]);
        }
        
        // controllo palindromità
        if (numero1[0] == numero1[3]) controllo++; // controllo la prima e l'ultima cifra
        if (numero1[1] == numero1[2]) controllo++; // controllo la seconda e la penultima cifra
    
        if (controllo == 2)
            printf("\nil numero e' palindromo\n");
        else
            printf("\nil numero non e' palindromo\n");
    }
    
    
    Ora prova a fare lo stesso con i cicli e che funzioni anche con numeri di varie cifre.
Devi accedere o registrarti per scrivere nel forum
2 risposte