Definizione e uso di un nuovo tipo di dato

di il
11 risposte

Definizione e uso di un nuovo tipo di dato

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

  • Re: Definizione e uso di un nuovo tipo di dato

    Definisci una struttura con dentro l'array
  • Re: Definizione e uso di un nuovo tipo di dato

    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';
  • Re: Definizione e uso di un nuovo tipo di dato

    Sinceramente non ho capito quale sia il problema...

    Semplicemente
    cartadicredito carta[N]
    equivale a
    int carta[N][16]
  • Re: Definizione e uso di un nuovo tipo di dato

    Ma un array di Nx16 interi non serve... deve essere un array di char
  • Re: Definizione e uso di un nuovo tipo di dato

    Ma andando a definire un array di tipo char
    typedef char carta[16]
    come faccio successivamente a valutare cifra per cifra?
  • Re: Definizione e uso di un nuovo tipo di dato

    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?
  • Re: Definizione e uso di un nuovo tipo di dato

    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
  • Re: Definizione e uso di un nuovo tipo di dato

    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).
  • Re: Definizione e uso di un nuovo tipo di dato

    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.
  • Re: Definizione e uso di un nuovo tipo di dato

    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!!
  • Re: Definizione e uso di un nuovo tipo di dato

    Ma mi sa che non hai letto quello che ti ho risposto....
Devi accedere o registrarti per scrivere nel forum
11 risposte