|
Proseguiamo con gli esercizi sui cambiamenti di base. Finalmente i ragazzi hanno imparato
ad usare i parametri, quindi questo esercizio li richiede.
Il testo dell'esercizio è il seguente:
Scrivere un programma C che:
- Converta un numero float in un numero in virgola mobile ad 8 bit, di cui 5 di
parte intera. Il numero binario in virgola mobile andrà immagazzinato in un array di
interi, un bit per ogni intero. (usare una funzione con parametri il float ed il vettore)
- Stampi il numero binario ottenuto. (usare una funzione con parametro il vettore)
Utilizzare delle funzioni con i parametri per i vari compiti, come indicato.
Una possibile soluzione è la seguente:
// Pinco - Tizio - 3AIN
// Correzione dell'esercizio 5 della verifica di laboratorio
#include <stdio.h>
#define DIM 8 /* Dimensione totale del numero */
#define BASE 2 /* Base del numero convertito (binario) */
void nToB5fix(float f,int n5[]); // Converte il float in un numero in virgola fissa
void visb5(int n5[]); // Visualizza il numero in virgola fissa
main()
{
float numero; // Numero da convertire
int n5[8]; // Array nel quale lasciare il risultato
numero=12.78; // Valore del numero (fisso)
nToB5fix(numero,n5); // Converte il numero
visb5(n5); // Stampa il risultato
}
/* Converte un numero float in uno in virgola fissa a 8 bit con parte intera a 5
*
* I bit del numero convertito saranno lasciati in un array di interi, un bit
* per elemento, nel primo il bit piu' significativo, nell'ultimo il meno
*/
void nToB5fix(float f,int n5[])
{
int i; // Contatore
int n = f * 8.0; // Numero intero da convertire (reso intero)
for(i=DIM-1;i>=0;i--) // Ciclo all'indietro, dall'ultimo elemento
{
n5[i]=n%BASE; // Mette nell'elemento il bit piu' basso
n=n/BASE; // Divide il numero per 2, per trovareil bit successivo
}
}
/* Stampa il numero binario, immagazzinato nel vettore n5
*/
void visb5(int n5[])
{
int i;
for(i=0;i<DIM;i++)
{
printf("%d",n5[i]);
}
printf("\n");
}
|
Per provare il programma, scaricare il sorgente, compilarlo
con il comando cc verifica.c ed eseguirlo con il comando ./a.out.
[Home Page dell'ITIS "Fermi"]
[Indice Terza]
[Precedente]
[Successivo]
© Ing. Stefano Salvi - Released under GPL licence
|