Anteprima
Vedrai una selezione di 1 pagina su 2
Programma C - Trasformazioni complesse. Pag. 1
1 su 2
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Titolo dell'appunto

Il programma permette di trasformare un numero n in base b1 nello stesso numero espresso pero' in base b2 (n, b1, b2 dati dall'utente).

Breve esempio di esecuzione:

1 Conversione tra basi arbitrarie.
2 Inserire la base di partenza (2-36): 18
3 Inserire il numero da convertire, espresso in base 18: 12fhb4c
4 Inserire la base in cui esprimere il numero: 13
5 Il numero, convertito in base 13, vale: 823bb1c
Estratto del documento

#include <string>

using namespace std;

#ifndef BASE_LIB

#define BASE_LIB

string base_a_base(string&, int, int);

unsigned int valore_del_char(char);

#endif

#include <math.h>

#include <string>

#include "es_6b_lib.h"

using namespace std;

string base_a_base(string& numero, int base_from, int base_to){

const string SIMBOLI = "0123456789abcdefghijklmnopqrstuvwxyz";

unsigned long int num=0;

int i;

for (i=numero.length()-1;i>=0;i--)

num+=((long unsigned int)((pow(base_from,(numero.length()-i-1)))) *

valore_del_char(numero[i]));

// la conversione in numero vero e proprio e' fatta..

// ora si ritrasforma num in una stringa...

string res = "";

// l'estremo superiore del for fa il calcolo di qual e'

// la cifra non-nulla piu' significativa di num nella nuova base

int cifra;

for(i=((int)(log(num+1)/log(base_to))); i >= 0;i--){

cifra = ((unsigned long int)(num/pow(base_to,i))) % base_to;

// calcolo della cifra (numericamente) alla posizione i

res = res + SIMBOLI[cifra];

// e concatenazione del simbolo corrispondente alla stringa

risultato

}

return res;

/* Nota:

per come e' programmata questa funzione, non verranno rilevati errori

dando una stringa come "4ab" e dicendo che e' espressa in base 2...

volendo, si poteva modificare la funzione valore_del_char in modo che

non andasse oltre la cifra i-esima (i=base entrante) di SIMBOLI nel

cercare il simbolo dato (per fare cio', sarebbe stato necessario passare

alla funzione valore_del_char anche b_from...) */

}

unsigned int valore_del_char(char simbolo){

const string SIMBOLI = "0123456789abcdefghijklmnopqrstuvwxyz";

Dettagli
Publisher
2 pagine
8 download