Definizione e uso di un nuovo tipo di dato

di Anonimizzato26799 il
11 risposte
Salve ho un dubbio e non so come risolverlo. Sono nuovo e mi scuso se non è chiaro quanto sto per dire.
Vorrei definire un nuovo tipo che mi serve per un programmino che vada a ricercare all'interno di un file di testo i numeri di carta di credito validi tramite la formula di Luhn. Io vorrei definire un nuovo tipo ossia:
typedef int cartadicredito[16]
e poi nel main andare a dichiararmi una variabile del tipo
cartadicredito carta[N] 
dove N sarà poi il numero di carte presenti nel file, essendo ogni riga composta da un numero di carta.
Il problema che mi sorge è il seguente: se andando a dichiarare nel main un array del tipo di dato precedentemente definito, quello che ottengo è una sorta di matrice, ma come faccio a muovermi in all'interno dell'array cartadicredito[16] andando a valutare ogni singolo numero della di cui è composto il numero della mia carta? Dato che carta[N] è un vettore contente i numeri delle carte.
Spero di essere stato chiaro e in un vostro aiuto.
Grazie

11 Risposte

  • Definisci una struttura con dentro l'array
  • Premesso che è meglio usare la struttura puoi usare la typedef ma con dei char

    typedef char cartadicredito[16];

    E quindi puoi scrivere

    carta[0][0]='4';
  • Sinceramente non ho capito quale sia il problema...

    Semplicemente
    cartadicredito carta[N]
    equivale a
    int carta[N][16]
  • Ma un array di Nx16 interi non serve... deve essere un array di char
  • Ma andando a definire un array di tipo char
    typedef char carta[16]
    come faccio successivamente a valutare cifra per cifra?
  • Nippolo ha scritto:


    Sinceramente non ho capito quale sia il problema...

    Semplicemente
    cartadicredito carta[N]
    equivale a
    int carta[N][16]
    Quindi posso scorrere tramite due cicli for il primo mi va a scorrere le righe e il secondo lo uso per valutare cifra per cifra?
  • elProfessor ha scritto:


    Ma andando a definire un array di tipo char
    typedef char carta[16]
    come faccio successivamente a valutare cifra per cifra?
    Te l'ho scritto nella risposta. Non l'hai letta attentamente
  • elProfessor ha scritto:


    Quindi posso scorrere tramite due cicli for il primo mi va a scorrere le righe e il secondo lo uso per valutare cifra per cifra?
    Certo, a prescindere dal tipo int o char, siamo cmq di fronte ad un semplice array bidimensionale (o matrice se preferisci).
    Ovviamente nel caso in cui utilizzi i char, il tutto può essere visto equivalentemente o come una matrice di Nx16 char o come un array di N stringhe con una capienza massima di 16-1 caratteri (poiché va preso in considerazione anche il carattere terminatore di stringa \0).
  • Nel caso specifico di una carta di credito in cui hai una lunghezza fissa di 16 caratteri per il dato puoi non tenere in considerazione il terminatore.
  • Nippolo ha scritto:


    elProfessor ha scritto:


    Quindi posso scorrere tramite due cicli for il primo mi va a scorrere le righe e il secondo lo uso per valutare cifra per cifra?
    Certo, a prescindere dal tipo int o char, siamo cmq di fronte ad un semplice array bidimensionale (o matrice se preferisci).
    Ovviamente nel caso in cui utilizzi i char, il tutto può essere visto equivalentemente o come una matrice di Nx16 char o come un array di N stringhe con una capienza massima di 16-1 caratteri (poiché va preso in considerazione anche il carattere terminatore di stringa \0).
    Grazie mille davvero!!
  • Ma mi sa che non hai letto quello che ti ho risposto....
Devi accedere o registrarti per scrivere nel forum
11 risposte