Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    funzione con atoi

    ciao ragazzi e un saluto al tutti.questo è il mio primo post.
    volevo chiedervi di risolvermi questo problema.
    devo creare una funzione in c che permetta di copiare in un intero senza segno un vettore di 4 char.potreste scrivermi il codice? (che a quel che ho capito deve tenere conto della funzione atoi).

    l'altra versione che dovrei svolgere (e che dovrebbe essere l'inverso della prima) è la seguente:
    scrivere il codice di una funzione C che permette di copiare in un vettore di 4 char i 4 byte di un intero.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    non ho capito se devi formattare il numero in decimale con massimo 4 cifre, o fare una semplice copia di un intero a 32bit in quattro byte

  3. #3

    Moderazione

    Qui non si fornisce la "pappa pronta" né si fanno i compiti altrui. Documentati, posta un tuo abbozzo di soluzione e i punti che ti danno problemi, e poi se ne riparla.

    Inoltre, devi specificare il linguaggio di riferimento come tag nel titolo, questa volta correggo io, in futuro inseriscilo fin da subito.

    Approfitto infine dell'occasione per suggerirti di dare un'occhiata al regolamento.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Originariamente inviato da XAlbeX
    non ho capito se devi formattare il numero in decimale con massimo 4 cifre, o fare una semplice copia di un intero a 32bit in quattro byte
    da quello che ne ho capito io bisogna fare una semplice copia di un intero.potresti scrivermi il codice.io l'ho cominciato ma mi sono bloccato

  5. #5
    ecco cosa avevo scritto io(mi sono ispirato al prototipo del atoi conoscendo la base in bui sono scritti gli elementi dell'array)

    char v[4];
    int myatoi(char *v,int base){
    int val=o:
    int i;
    for(i=0;v[i];i++){
    val *=base
    val += v[i]-'0';
    }
    return val;
    }

    sapreste dirmi se è giusto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    sapreste dirmi se è giusto?
    scusa ma perchè non lo provi a compilare?


    codice:
    int val=o:
    non è possibile assegnare una faccina a una variabile int senza un cast esplicito

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Secondo me è errato. Non avrebbe senso un simile esercizio. E' molto probabile tu debba copiare ogni singolo elemento in 8bit dell'intero.

  8. #8
    Ma tu devi ottenere nei quattro char la copia bit-a-bit del contenuto dell'int, tipo quello che otterresti con una memcpy? O cos'altro?
    Per chiarirci: se ti do l'intero 12345, tu cosa vuoi che ci sia alla fine nei quattro char?

    Originariamente inviato da XAlbeX
    non è possibile assegnare una faccina a una variabile int senza un cast esplicito
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da MItaly
    Ma tu devi ottenere nei quattro char la copia bit-a-bit del contenuto dell'int, tipo quello che otterresti con una memcpy? O cos'altro?
    Per chiarirci: se ti do l'intero 12345, tu cosa vuoi che ci sia alla fine nei quattro char?


    Pur non chiamandomi pablito92 intervengo io. :P

    Credo debba semplicemente prendere i bit dell'elemento 0 e metterli nei primi 8bit del numero, l'elemento 1 negli 8bit successivi, e così per gli altri 2byte rimasti.

    Se gli dai quell'intero torna sbagliato. O meglio, in un intero (di 32bit) ci stanno solo 4byte, ergo 4 char.
    Prendendoti "alla lettera", ed usando 12345d, non puoi ottenere nulla; la sua rappresentazione binaria è 11000000111001b (sono 14bit).

    Comunque spiego ciò che intendevo io.
    {a, b, c, d} // I 4 char

    a = 97d;
    b = 98d;
    c = 99d;
    d = 100d;

    97 = 1100001
    98 = 1100010
    99 = 1100011
    100 = 1100100


    intero = 1100001110001011000111100100b

    In base 10: 205042148

    // Quindi, passando all'altra funzione il numero: 205042148, devo ottenere: a, b, c, d

    Io l'ho interpretato così, perchè non vedrei altri modi didattici interessanti...se voi ne avete colti, illuminatemi.


    PS: in questo modo l'ho già scritto, è semplice, nulla di complicato.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    131
    Originariamente inviato da Patrick Jane
    Secondo me è errato. Non avrebbe senso un simile esercizio. E' molto probabile tu debba copiare ogni singolo elemento in 8bit dell'intero.
    Prima parla di copia in 4 byte... poi di atoi


    Originariamente inviato da Patrick Jane
    Prendendoti "alla lettera", ed usando 12345d, non puoi ottenere nulla; la sua rappresentazione binaria è 11000000111001b (sono 14bit).
    beh nulla vieta di considerare gli zeri a sinistra

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.