Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-07-2008, 12:20   #1
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
[C++/intero come lettera in output] - Conversione tra binario e esadecimale

Ciao a tutti,
sto completando un esercizio che mi richiede la conversione di numeri binari in numeri esadecimali.

Sono riuscito ad analizzare le singole quartine del numero binario, adesso sto mettendo su una tabella di conversione per convertire ogni singola quartina nella cifra esadecimale corrispondente.

Mi sono bloccato nel momento in cui cerco di indicare al programma che se la quartina è pari a 1010 (che io vedo come int) in output voglio una "A".

Come posso risolvere?

Ringrazio tutti ancitipatamente per l'aiuto!

Unslee
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 13:05   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
puoi usare la sprintf, indicando come parametro di uscita che vuoi un numero esadecimale (se non sbaglio e' %X)

puoi comunque scrivere la parte centrale di tutto l'esercizio in 2 righe.

la prima con strtol, per trasformare una stringa (anche binario) in un long.
la seconda con sprintf, per avere l'output esadecimale del long prima ottenuto.

http://www.cplusplus.com/reference/c...ib/strtol.html
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 13:11   #3
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Ciao,
innanzitutto grazie per la risposta. Sono alle prime armi ... se andato un pò troppo veloce!

Allora la situazione attuale è questa: ho una variabile in numerica del tipo 1000. Devo dire al programma che quando trova questa variabile mi deve restituire in output (con un cout) ad esempio la lettera F!

Come posso risolvere?

Grazie aticipatamente,

Unslee
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 13:13   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Non ho capito.
Tu hai un intero che vale 1010 (ovvero MilleEDieci in decimale)
oppure un intero che vale 10 (ovvero MilleEDieci in binario)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 13:42   #5
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Ciao,
cerco di spiegarmi meglio.

Poniamo per esempio che io abbia un intero 10100. Vorrei far si che il 10100 venga trasformato ad esempio in "B".

Come posso fare?

Grazie,

Unslee
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 14:08   #6
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da unslee Guarda i messaggi
Ciao,
cerco di spiegarmi meglio.

Poniamo per esempio che io abbia un intero 10100. Vorrei far si che il 10100 venga trasformato ad esempio in "B".

Come posso fare?

Grazie,

Unslee
Ciao, allora prima di tutto... confesso che mi sono un po' perso.
Fino a prova contraria B equivale a 11 in decimale, e dunque 1011 in binario

Per il resto, vorrei capire perchè stai svolgendo questo lavoro: se si tratta di un esercizio in cui applicare un algoritmo preciso, o se devi soltanto ottenere rappresentazioni diverse di un intero.

La prima cosa che sarebbe utile sapere è come memorizzi questi numeri: come interi, array di cifre, di caratteri...?

Se ad esempio puoi utilizzare le singole cifre, potresti semplicemente moltiplicarle per le successive potenze di 2 in modo da ottenere una rappresentazione decimale del valore.

Poi attraverso il modificatore di output hex
Codice:
cout << hex << n;
puoi stampare il valore in forma esadecimale.

Un'altra tecnica potrebbe essere quella di creare una array di caratteri e associare ad ogni possibile combinazione di 4 bit un valore esadecimale, per poi memorizzarli nella posizione opportuna dell'array: in questo modo otterresti una stringa che rappresenta il valore.
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 14:36   #7
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Per un attimo dimentichiamoci il binario! Ho una variabile int pari a 7; come posso trasformare questo 7 in "A".

Cerco di spiegarti il perche di tutto questo !!!!

COn il libro di c++ ho studiato fino al capitolo 5 (istruzioni di sequenza, selezione, iterazione) ed in pratica ho studiato teoricamente il pensiero ad oggetti e praticamente sintassi e istruzioni. Il modificatore di output non posso usarlo perché non l'ho studiato ancora (anche se sicuramente sarebbe tutto più semplice!).

Nell'esercizio mi viene chiesto di rappresentare i primi 256 numeri decimali con a fianco la rappresentazione binaria, esadecimale, ottale.

Da decimale a binario ho risolto. Poi mi si è posto il problema di rappresentare l'esadecimale ed ho deciso di partire dal valore binario ottenuto.

Siccome la trasformazione da binario in esadecimale si fa valutando le quartine del binario da dx a sx e confrontanto con la scala di valori dell'esadecimale da 1 a F, ho messo su un ciclo che mi scompone ogni binario in quartine; per ogni quartina, da dx a sx ho una variabile.

Se provo ad eseguire il programma per il decimale 256 mi restituisce in binario 100.000.000. Dal binario il ciclo mi tira fuori 3 quartine (variabili) e cioè: 0, 0, 1.

L'idea è quella adesso di prendere ogni quartina e confrontarla con la tabella di conversione binario - esadecimale e dopo comporre l'esadecimale con un semplice cout << variabile1 << variabile2 << variabile3.

Ora il problema si pone quando devo imbastire la corrispondenza tra una quartina 1010 ed il corrispondente esadecimale "A" ( una quartina 1011 ed il corrispondente "B" e via di seguito). Io ho una variabile int pari a 1010 (me lo restituisce il ciclo) e non so come posso far uscire in cout "A".

Spero di essere stato un pò più chiaro. La logica di questi esercizi è proprio l'allenamento sui cicli anche se, imparata la programmazione, una conversione del genere si fa con due righe di programma!
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:06   #8
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da unslee Guarda i messaggi
...
Se hai il decimale, non c'è niente di più facile: se lo tieni memorizzato in una variabile, che chiameremo dec, basterà:
Codice:
cout << hex << dec;
Costruire un algoritmo ti richiede di lavorare o sui singoli bit o su una tabella di associazioni: mi sembrano comunque soluzioni molto poco eleganti.
edit: ovviamente parlo di bit in senso lato: intendo i singoli '0' e '1'
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:21   #9
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Sicuramente è poco elegante ... ma è quello che mi viene chiesto!

Ritorno al quesito principale:
se io ho una variabile int a = 7 ma voglio che nell'output con un cout mi venga restituita una lettera dell'alfabeto, ad esempio P, qual'è il sistema?


Grazie dell'aiuto,

Unslee
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:38   #10
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
se io ho una variabile int a = 7 ma voglio che nell'output con un cout mi venga restituita una lettera dell'alfabeto, ad esempio P, qual'è il sistema?
Non ti basta un cast a char?

Codice:
#include <iostream>

using namespace std;

int main(void){
	int a = 69;
	cout << (char) a << endl;
	return 0;
}
Conosci la tabella ASCII?
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:38   #11
Albi89
Senior Member
 
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
Quote:
Originariamente inviato da unslee Guarda i messaggi
Sicuramente è poco elegante ... ma è quello che mi viene chiesto!

Ritorno al quesito principale:
se io ho una variabile int a = 7 ma voglio che nell'output con un cout mi venga restituita una lettera dell'alfabeto, ad esempio P, qual'è il sistema?


Grazie dell'aiuto,

Unslee
Aspetta aspetta, prima parlavamo di esadecimale, ora stai parlando di P... cosa intendi?
7 in esadecimale è 7, e se usi il modificatore di stream che ti ho scritto prima, ti sarà scritta in esadeciale come, appunto, 7.
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.
--Gerald Weinberg
Albi89 è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:42   #12
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Grazie per l'aiuto variabilepippo! Ci stiamo avvicinando alla soluzione !
Per alibi89: lasciamo stare il binario e la sua trasformazione in esadecimale.

Per variabilepippo:
Conosco gli ascii.
Come memorizzo "P" nella variabile che prima conteneva il numero (o anche in un'altra variabile creata ex-novo)?

L'esempio concreto potrebbe essere:

a) Il programma assegna un valore numerico alla mia variabile a

b) Condizione:
se a = 10;
a = 3
output di a: 3.


invece

se a = 11
a = "P"
output di a = "P"

Ultima modifica di unslee : 08-07-2008 alle 15:46.
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 15:47   #13
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Se continui a cambiare le carte in tavola in merito al problema non si arriverà mai ad una soluzione!

Non mi è chiaro cosa intendi con "Come memorizzo "P" nella variabile che prima conteneva il numero (o anche in un'altra variabile creata ex-novo)?".

Vuoi fare una cosa del genere?

Codice:
#include <iostream>

using namespace std;

int main(void){
	int a = 69;
	char b = (char) a;
	cout << b << endl;
	return 0;
}
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 16:06   #14
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Ok ,
credo che la cosa migliore sia postare il codice. Come inserisco il codice nel riquadro (è un pò lunghetto!)?
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 16:14   #15
marko.fatto
Senior Member
 
L'Avatar di marko.fatto
 
Iscritto dal: Jul 2007
Messaggi: 499
utilizzando i tag code
__________________
marko.fatto è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 16:32   #16
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Ci sono riuscito!
L'indicazione era corretta. Mi sono creato delle variabili di comodo (alfa, beta e gamma) per portarmi le lettere in CHAR (utilizzando la trasposizione dell'ascii).

Credo che con il codice sarà tutto più chiaro a tutti voi che avete cercato di darmi una mano! Considerate che ho iniziato da poco lo studio del c++ e che la creazione specifica dell'algoritmo era espressamente prevista negli esercizi. Qualsiasi consiglio sarà veramente benaccetto!

Codice:
// Esercizio 518.cpp : definisce il punto di ingresso dell'applicazione console.
//

#include "stdafx.h"

#include <iostream>
using std::cout;
using std::endl;

#include <iomanip>
using std::setw;

#include <string>
using std::string;

int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}

int main()
{
	int a;
	int b;
	int num;
	int counter2;

	int num2;
	int diviso;
	

	cout << setw(8) << "Numero" << setw(12) << "Binario" << setw(15) << "Esadecimale" << endl;

	for (int counter = 256; counter > 0; counter--)
	{
		a = 1;
		num = 0;
		counter2 = counter;

		for (; counter2 != 0; counter2 /= 2)
		{
			b = counter2 % 2;
			num = num + (b * a);
			a *= 10;
		}

		a = 1;
		diviso = num;
		int alfa = 0;
		int beta = 0;
		int gamma = 0;
		char epsilon = 0;
		char delta = 0;
		char zeta = 0;

		int counter3;

		counter3 = num;

		for (; counter3 != 0;)
		{
			alfa = 0;
			beta = 0;
			gamma = 0;

			for (int c = 4; c > 0; c--)
				{num2 = counter3 % 10;
				counter3 = counter3 / 10;
				alfa = alfa + (num2 * a);
				a = a * 10;}
				
				a = 1;

			for (int d = 4; d > 0; d--)
				{num2 = counter3 % 10;
				counter3 = counter3 / 10;
				beta = beta + (num2 * a);
				a = a * 10;}

				a = 1;

			for (int e = 4; e >0; e--)
				{num2 = counter3 % 10;
				counter3 = counter3 / 10;
				gamma = gamma + (num2 * a);
				a = a * 10;}

				a = 1;
	}

		switch ( alfa )
		{
		case 0:
			alfa = 0;
			break;
		case 1:
			alfa = 1;
			break;
		case 10:
			alfa = 2;
			break;
		case 11:
			alfa = 3;
			break;
		case 100:
			alfa = 4;
			break;
		case 101:
			alfa = 5;
			break;
		case 110:
			alfa = 6;
			break;
		case 111:
			alfa = 7;
			break;
		case 1000:
			alfa = 8;
			break;
		case 1001:
			alfa = 9;
			break;
		case 1010:
			alfa = 65;
			epsilon = (char)alfa;
			break;
		case 1011:
			alfa = 66;
			epsilon = (char)alfa;
			break;
		case 1100:
			alfa = 67;
			epsilon = (char)alfa;
			break;
		case 1101:
			alfa = 68;
			epsilon = (char)alfa;
			break;
		case 1110:
			alfa = 69;
			epsilon = (char)alfa;
			break;
		case 1111:
			alfa = 70;
			epsilon = (char)alfa;
			break;
		}

	switch ( beta )
		{
		case 0:
			beta = 0;
			break;
		case 1:
			beta = 1;
			break;
		case 10:
			beta = 2;
			break;
		case 11:
			beta = 3;
			break;
		case 100:
			beta = 4;
			break;
		case 101:
			beta = 5;
			break;
		case 110:
			beta = 6;
			break;
		case 111:
			beta = 7;
			break;
		case 1000:
			beta = 8;
			break;
		case 1001:
			beta = 9;
			break;
		case 1010:
			beta = 65;
			zeta = (char)beta;
			break;
		case 1011:
			beta = 66;
			zeta = (char)beta;
			break;
		case 1100:
			beta = 67;
			zeta = (char)beta;
			break;
		case 1101:
			beta = 68;
			zeta = (char)beta;
			break;
		case 1110:
			beta = 69;
			zeta = (char)beta;
			break;
		case 1111:
			beta = 70;
			zeta = (char)beta;
			break;
		}

	switch ( gamma )
		{
		case 0:
			gamma = 0;
			break;
		case 1:
			gamma = 1;
			break;
		case 10:
			gamma = 2;
			break;
		case 11:
			gamma = 3;
			break;
		case 100:
			gamma = 4;
			break;
		case 101:
			gamma = 5;
			break;
		case 110:
			gamma = 6;
			break;
		case 111:
			gamma = 7;
			break;
		case 1000:
			gamma = 8;
			break;
		case 1001:
			gamma = 9;
			break;
		case 1010:
			gamma = 65;
			delta = (char)gamma;
			break;
		case 1011:
			gamma = 66;
			delta = (char)gamma;
			break;
		case 1100:
			gamma = 67;
			delta = (char)gamma;
			break;
		case 1101:
			gamma = 68;
			delta = (char)gamma;
			break;
		case 1110:
			gamma = 69;
			delta = (char)gamma;
			break;
		case 1111:
			gamma = 70;
			delta = (char)gamma;
			break;
		}

	if ( alfa < 39 && beta < 39 && gamma < 39 )
		cout << setw(8) << counter << setw(12) << num << setw(15) << gamma << beta << alfa<< endl;
	else
		if (alfa > 39 && beta < 39 && gamma < 39 )
		cout << setw(8) << counter << setw(12) << num << setw(15) << gamma << beta << epsilon << endl;
		else
			if (alfa > 39 && beta > 39 && gamma < 39)
				cout << setw(8) << counter << setw(12) << num << setw(15) << gamma << zeta << epsilon << endl;
			else
				if (alfa > 39 && beta < 39 && gamma > 39)
					cout << setw(8) << counter << setw(12) << num << setw(15) << delta << beta << epsilon << endl;
				else
					if (alfa < 39 && beta > 39 && gamma > 39)
						cout << setw(8) << counter << setw(12) << num << setw(15) << delta << zeta << alfa << endl;
					else
						if (alfa >39 && beta > 39 && gamma > 39)
							cout << setw(8) << counter << setw(12) << num << setw(15) << delta << zeta << epsilon << endl;


	}

	return 0;

}

Ultima modifica di unslee : 08-07-2008 alle 16:35.
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 08-07-2008, 19:54   #17
unslee
Member
 
L'Avatar di unslee
 
Iscritto dal: Jun 2008
Messaggi: 40
Vi posto l'esercizio completo. La richiesta recitava così: scrivere un programma che mostri per tutti i numeri da 1 a 256 le relative corrispondenze nelle numerazioni decimale, binaria, esadecimale, ottale. Il programma prevede la costruzione di tutti gli algoritmi.

Ho scritto parte dei commenti. Domani finisco.

Accetto consigli, migliorie, correzioni e ringrazio tutte le persone che mi hanno aiutato sopportando le mie spiegazioni poco chiare

Codice:
// Esercizio 518.cpp : definisce il punto di ingresso dell'applicazione console.
//

#include "stdafx.h"

#include <iostream>
using std::cout;
using std::endl;

#include <iomanip>
using std::setw;



int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}

int main()
{
	int a;			// Variabile che prende valore a = a * 10 - Serve come moltiplicando per il calcolo dei binari
	int b;			// Serve come moltiplicando per il calcolo dei binati
	int num;		// Numeri binari
	int counter2;	// Necessario per il calcolo di numeri binari

	int num2;		// Necessario come moltiplicando per i numeri esadecimali
	int num3;
		
	//Facciamo apparire l'intestazione della tabella
	cout << setw(8) << "Decimale" << setw(16) << "Binario" << setw(17) << "Esadecimale" << setw(14) << "Ottale" << endl;

	//Dovendo calcolare le corrispondenze per 256 numeri creiamo un ciclo che si ripete 256 volte
	for (int counter = 256; counter > 0; counter--)
	{
		a = 1;
		num = 0;
		counter2 = counter;

		for (; counter2 != 0; counter2 /= 2)
		{
			b = counter2 % 2;
			num = num + (b * a);
			a *= 10;
		}

		a = 1;

		
		int alfa = 0;
		int beta = 0;
		int gamma = 0;
		char epsilon = 0;
		char delta = 0;
		char zeta = 0;

		int counter3;

		counter3 = num;

		for (; counter3 != 0;)
		{
			alfa = 0;
			beta = 0;
			gamma = 0;

			for (int c = 4; c > 0; c--)
				{num2 = counter3 % 10;
				counter3 = counter3 / 10;
				alfa = alfa + (num2 * a);
				a = a * 10;}
				
				a = 1;

			for (int d = 4; d > 0; d--)
				{num2 = counter3 % 10;
				counter3 = counter3 / 10;
				beta = beta + (num2 * a);
				a = a * 10;}

				a = 1;

			for (int e = 4; e >0; e--)
				{num2 = counter3 % 10;
				counter3 = counter3 / 10;
				gamma = gamma + (num2 * a);
				a = a * 10;}

				a = 1;
	}

		switch ( alfa )
		{
		case 0:
			alfa = 0;
			break;
		case 1:
			alfa = 1;
			break;
		case 10:
			alfa = 2;
			break;
		case 11:
			alfa = 3;
			break;
		case 100:
			alfa = 4;
			break;
		case 101:
			alfa = 5;
			break;
		case 110:
			alfa = 6;
			break;
		case 111:
			alfa = 7;
			break;
		case 1000:
			alfa = 8;
			break;
		case 1001:
			alfa = 9;
			break;
		case 1010:
			alfa = 65;
			epsilon = (char)alfa;
			break;
		case 1011:
			alfa = 66;
			epsilon = (char)alfa;
			break;
		case 1100:
			alfa = 67;
			epsilon = (char)alfa;
			break;
		case 1101:
			alfa = 68;
			epsilon = (char)alfa;
			break;
		case 1110:
			alfa = 69;
			epsilon = (char)alfa;
			break;
		case 1111:
			alfa = 70;
			epsilon = (char)alfa;
			break;
		}

	switch ( beta )
		{
		case 0:
			beta = 0;
			break;
		case 1:
			beta = 1;
			break;
		case 10:
			beta = 2;
			break;
		case 11:
			beta = 3;
			break;
		case 100:
			beta = 4;
			break;
		case 101:
			beta = 5;
			break;
		case 110:
			beta = 6;
			break;
		case 111:
			beta = 7;
			break;
		case 1000:
			beta = 8;
			break;
		case 1001:
			beta = 9;
			break;
		case 1010:
			beta = 65;
			zeta = (char)beta;
			break;
		case 1011:
			beta = 66;
			zeta = (char)beta;
			break;
		case 1100:
			beta = 67;
			zeta = (char)beta;
			break;
		case 1101:
			beta = 68;
			zeta = (char)beta;
			break;
		case 1110:
			beta = 69;
			zeta = (char)beta;
			break;
		case 1111:
			beta = 70;
			zeta = (char)beta;
			break;
		}

	switch ( gamma )
		{
		case 0:
			gamma = 0;
			break;
		case 1:
			gamma = 1;
			break;
		case 10:
			gamma = 2;
			break;
		case 11:
			gamma = 3;
			break;
		case 100:
			gamma = 4;
			break;
		case 101:
			gamma = 5;
			break;
		case 110:
			gamma = 6;
			break;
		case 111:
			gamma = 7;
			break;
		case 1000:
			gamma = 8;
			break;
		case 1001:
			gamma = 9;
			break;
		case 1010:
			gamma = 65;
			delta = (char)gamma;
			break;
		case 1011:
			gamma = 66;
			delta = (char)gamma;
			break;
		case 1100:
			gamma = 67;
			delta = (char)gamma;
			break;
		case 1101:
			gamma = 68;
			delta = (char)gamma;
			break;
		case 1110:
			gamma = 69;
			delta = (char)gamma;
			break;
		case 1111:
			gamma = 70;
			delta = (char)gamma;
			break;
		}

		a = 1;

		int x = 0;
		int y = 0;
		int w = 0;
		int z = 0;
		char m = 0;
		char n = 0;
		char o = 0;

		int counter5;

		counter5 = num;

		for (; counter5 != 0;)
		{
			x = 0;
			y = 0;
			w = 0;

			for (int c = 3; c > 0; c--)
				{num3 = counter5 % 10;
				counter5 = counter5 / 10;
				x = x + (num3 * a);
				a = a * 10;}
				
				a = 1;

			for (int d = 3; d > 0; d--)
				{num3 = counter5 % 10;
				counter5 = counter5 / 10;
				y = y + (num3 * a);
				a = a * 10;}

				a = 1;

			for (int e = 3; e >0; e--)
				{num3 = counter5 % 10;
				counter5 = counter5 / 10;
				w = w + (num3 * a);
				a = a * 10;}

				a = 1;

	}

		switch ( x )
		{
		case 0:
			x = 0;
			break;
		case 1:
			x = 1;
			break;
		case 10:
			x = 2;
			break;
		case 11:
			x = 3;
			break;
		case 100:
			x = 4;
			break;
		case 101:
			x = 5;
			break;
		case 110:
			x = 6;
			break;
		case 111:
			x = 7;
			break;
		}

	switch ( y )
		{
		case 0:
			y = 0;
			break;
		case 1:
			y = 1;
			break;
		case 10:
			y = 2;
			break;
		case 11:
			y = 3;
			break;
		case 100:
			y = 4;
			break;
		case 101:
			y = 5;
			break;
		case 110:
			y = 6;
			break;
		case 111:
			y = 7;
			break;
		}

	switch ( w )
		{
		case 0:
			w = 0;
			break;
		case 1:
			w = 1;
			break;
		case 10:
			w = 2;
			break;
		case 11:
			w = 3;
			break;
		case 100:
			w = 4;
			break;
		case 101:
			w = 5;
			break;
		case 110:
			w = 6;
			break;
		case 111:
			w = 7;
			break;
		}



	if ( alfa < 39 && beta < 39 && gamma < 39 )
		if (gamma ==0)
		cout << setw(8) << counter << setw(16) << num << setw(15) << " " << beta << alfa << setw(12)  << w << y << x << endl;
		else
		cout << setw(8) << counter << setw(16) << num << setw(15) << gamma << beta << alfa << setw(12)  << w << y << x << endl;
	else
		if (alfa > 39 && beta < 39 && gamma < 39 )
			if (gamma == 0)
			cout << setw(8) << counter << setw(16) << num << setw(15) << " " << beta << epsilon << setw(12)  << w << y << x << endl;
			else
			cout << setw(8) << counter << setw(16) << num << setw(15) << gamma << beta << epsilon << setw(12)  << w << y << x << endl;
		else
			if (alfa > 39 && beta > 39 && gamma < 39)
				if (gamma == 0)
				cout << setw(8) << counter << setw(16) << num << setw(15) << " " << zeta << epsilon << setw(12)  << w << y << x << endl;
				else
				cout << setw(8) << counter << setw(16) << num << setw(15) << gamma << zeta << epsilon << setw(12)  << w << y << x << endl;
			else
				if (alfa > 39 && beta < 39 && gamma > 39)
					if (delta == 0)
					cout << setw(8) << counter << setw(16) << num << setw(15) << " " << beta << epsilon << setw(12)  << w << y << x << endl;
					else
					cout << setw(8) << counter << setw(16) << num << setw(15) << delta << beta << epsilon << setw(12)  << w << y << x << endl;
				else
					if (alfa < 39 && beta > 39 && gamma > 39)
						if (delta == 0)
						cout << setw(8) << counter << setw(16) << num << setw(15) << " " << zeta << alfa << setw(12)  << w << y << x << endl;
						else
						cout << setw(8) << counter << setw(16) << num << setw(15) << delta << zeta << alfa << setw(12)  << w << y << x << endl;
					else
						if (alfa >39 && beta > 39 && gamma > 39)
							if (delta == 0)
							cout << setw(8) << counter << setw(16) << num << setw(15) << " " << zeta << epsilon << setw(12)  << w << y << x << endl;
							else
							cout << setw(8) << counter << setw(16) << num << setw(15) << delta << zeta << epsilon << setw(12)  << w << y << x << endl;

	}

	return 0;
}
unslee è offline   Rispondi citando il messaggio o parte di esso
Old 09-07-2008, 12:31   #18
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
Mmm non si capisce molto bene cosa dovresti fare, nel senso, come implementarlo...

Cioè non ho capito se devi partire dal numero decimale ed effettuare conversioni nelle altre basi, oppure creare un metodo per ogni tipologia di conversione.

Nel senso: se io ho un numero decimale, devo convertirlo in ottale, binario e esadecimale, oppure devo anche fare

Binario -> Ottale
Ottale -> Esadecimale
Esadecimale -> Binario

E così via... perché altrimenti partendo sempre dal formato decimale è molto semplice implementare la conversione.

Edit: ho tolto i codici che c'erano un po' di errori/orrori ora vedo di correggerli.
Edit2: eccoli, sono 3 metodi in Java, a parte alcune cose il principio è del tutto identico a come si farebbe in c++, spero di non aver fatto castronerie:

Codice:
public static String decToBin(int n) {
        if (n==0) return "0";
        if (n==1) return "1";
        return decToBin(n/2)+(n%2);
    }
    
    public static String decToOct(int n) {
        if (n<9) return String.valueOf(n);
        return decToOct(n/8)+(n%8);
    }
    
    public static String decToHex(int n) {
        if (n<10) return String.valueOf(n);
        int resto = n%16;
        if (resto>9 && resto<16) {
             char c = (char) ('A' + (resto - 10));
             return decToHex(n/16)+c;
        }
        return decToHex(n/16)+resto;
        
    }

Ultima modifica di WarDuck : 09-07-2008 alle 13:06.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
31,4 Tbps: Aisuru sfonda il suo stesso r...
Giocattoli AI, una falla espone oltre 50...
OPPO Reno15 in viaggio con Gaia Gozzi: i...
Elon Musk valuta il gioco delle tre cart...
Nuove revisioni per Abarth 600e: arrivan...
Intelligenza artificiale, re-training e ...
LG presenta a ISE 2026 la nuova serie di...
Alienware: disponibile in Italia il nuov...
Arrivano le bodycam sui treni di Ferrovi...
Nike taglia 775 posti negli USA: l'autom...
Crimson Desert si mostra in un nuovo gam...
Addio transistor? Questo dispositivo usa...
Jensen Huang: le fabbriche negli Stati U...
Sam Altman ammette l'errore: GPT-5.2 &eg...
Super test al gelo della Norvegia: quant...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v