Come unire un vettore di "char" in un solo intero ?

di il
1 risposte

Come unire un vettore di "char" in un solo intero ?

Non sono risucito a trovare una risposta a questo quesito che mi pogno da giorni:faccio un esempio per essere più chiaro
ho un vettore di caratteri:

char v[3]={ 1,2,3,4} ;

adesso vorrei che questo vettore di caratteri mi venga unito in una variabiale di tipo intero,in modo da avere:

int UNIONE;
unione=1234;

Nella teoria so che io dovrei passare a una stringa contenente i 4 caratteri e poi trasformarli in intero..ma ahime la procedura non mi è molto chiara e spero qualcuno mi riesca ad aiutare,o magari conosce una soluzione più semplice.grazie a tutti!

1 Risposte

  • Re: Come unire un vettore di "char" in un solo intero ?

    Allora credo di aver capito: tu vuoi inserire un vettore di numeri in un solo intero uno dopo l'altro giusto? Bene. Primo errore:
    char v[4] = {1, 2, 3, 4}; // Il vettore ha 4 valori non 3
    Comunque importa poco visto che era un esempio.

    Allora fai un ciclo for usando due variabili i e j. Una la usi per contare da 3 a 0 (compresi) e l'altra ti indica quante volte è stato ripetuto il ciclo. Quest'ultima ti servirà per aggiungere al valore di unione la moltiplicazione tra vettore e 10^j (per fare una potenza puoi usare la funzione pow() se non sbaglio nell'header math.h oppure ti crei una funzione apposita). Poi se vuoi stampa a schermo. Ecco un esempio (in C):
    #include <stdio.h>
    #include <stdlib.h>
    
    int Potenza(int Base, int Esponente) { // Attento ti permette solo potenze con esponente maggiore o uguale a 0
        int i, Risultato = 0;
        if (Base != 0) Risultato = 1;
        for (i = 0; i <= Esponente; i++) {
            Risultato *= Base;
        }
        return Risultato;
    }
    
    int main(void) {
        int Vettore[4], Unione = 0, i, j;
        Vettore = {1, 2, 3, 4};
        for (i = 3, j = 0; i >= 0; i--, j++) {
            Unione += Vettore[i] * Potenza(10, j);
        }
        printf("%d", Unione);
        system("PAUSE >NUL");
        return 0;
    }
    Se non hai capito chiedi pure.
Devi accedere o registrarti per scrivere nel forum
1 risposte