Oppure

Loading
01/02/09 15:26
sweetema
ciao,dovrei scrivere un programma ke visualizza una tabella che contiene la rappresentazione binaria,ottale,esadecimale dei numeri compresi tra 1 e 256.io ho pensato erroneamente di fare csì...qualke aiutino??
#include<iostream>
#include<stdlib>
#include<iomanip>
#include<cmath>

int functiona()
{
	for(int a=1;a<=256;a++)
	{
		int Aarray[10];
		for(int i=0;i<10;i++)
		{
			int q;
			do
			{ q=a/2;
			 Aarray[i]= a%2;
			 a=q;
			}
			while(q!=0);
				cout<<Aarray[i]<<"\n";
		}
	}
}
int functionb()
{
	for(int b=1;b<=256;b++)
	{
		int Barray[10];
		for(int i=0;i<10;i++)
		{
			int q;
			do
			{
				q=b/8;
			 Barray[i]=b%8;
			 b=q;
			}
			while(q!=0);
				cout<<Barray[i]<<"\n";
		}
	}
}
int functionc()
{
	for(int c=1;c<=256;c++)
	{
		int Carray[10];
		for(int i=0;i<10;i++)
		{
			int q;
			do
			{
			 q=c/16;
			 Carray[i]=c%16;
			 c=q;
			 }
			while(q!=0);
				cout<<Carray[i]<<"\n";
		}
	}
}

int main()
{

	cout<<"B.decimale"<<setw(20)<<"B.binaria"<<setw(20)<<"B.ottale"<<setw(20)<<"B.esadecimale\n";

	for(int j=1;j<=256;j++)
		{
		cout<<j<<setw(30)<<functiona()<<setw(20)<<functionb()<<setw(20)<<functionc()<<"\n";
     }
	return 0;
}


:-|
aaa
01/02/09 18:51
Overflow
ciao prova cosi:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX 256 

void ConvertToBase(int num, int base, char* result);

int main()
{
	char p[MAX]={0};
	printf("Dec\t Bin\t Oct\t Hex\n");

	for(int i=1;i<MAX;i++)
	{
		printf("%d\t",i);
		ConvertToBase(i,2,p); /* converto in base 2*/
		printf("%s\t",p);
		ConvertToBase(i,8,p); /* converto in base 8*/
		printf("%s\t",p);
		ConvertToBase(i,16,p); /* converto in base 16*/
		printf("%s\n",p);
	}

	return 1;
}

void ConvertToBase(int num, int base, char* ris)
{

	/* questa funzione converte il valore della variabile num nel 
	rispettivo valore contenuto nella variabile base, e restituisce
	il risultato in un array di caratteri (ris)*/

 int i=0, len = 1;
 int ArrayList[MAX]={0};

	memset(ris,0,MAX);
	while(num >0)
	{
		ArrayList[i++] = num % base;
		num /=base;
	}
	/*i valori ottenuti sono al contrario, cioè 
	l'array ArrayList va letto dal basso verso l'alto*/

	i--;
	
	/* inserisco i valori ottenuti nell'array ris,
	inserendo le lettere al posto dei valori che vanno da 
	10 a 15 nel caso di una conversione in base 16*/

	for(int y=0;i>=0;i--, y++)
	{
		switch(ArrayList[i])
		{
			case 10:
				ris[y] = 'A';
				continue;
			case 11:
				ris[y] = 'B';
				continue;
			case 12:
				ris[y] = 'C';
				continue;
			case 13:
				ris[y] = 'D';
				continue;
			case 14:
				ris[y] = 'E';
				continue;
			case 15:
				ris[y] = 'F';
				continue;
		}
		itoa(ArrayList[i],&ris[y],10);
	}	
	
}


ho commentato abbastanza il codice.
Ciao.
aaa
02/02/09 20:16
sweetema
grazie tante!!xò sè possibile vorrei avere kiarimenti su alcuni tratti ke non ho studiato durante il corso...
printf("%d\t",i); 
        ConvertToBase(i,2,p); /* converto in base 2*/ 
        printf("%s\t",p); 
        ConvertToBase(i,8,p); /* converto in base 8*/ 
        printf("%s\t",p); 
        ConvertToBase(i,16,p); /* converto in base 16*/ 
        printf("%s\n",p); 


e anche
memset(ris,0,MAX); 

e infine :asd:
itoa(ArrayList[i],&ris[y],10); 

scusami e grazie ancora!!!!!!!!!!!!!!;)
aaa
06/02/09 15:37
Overflow
credo che avresti bisogno di qualche chiarimento riguardo la programmazione.
allora ConvertToBase() che mi permette di nel nostro caso di convertire (se cosi si può dire) un numero da base 10 a un altra base a nostro piacimento.
Io ho utilizzato un ciclo for, dove l'indice i(variabile del ciclo) assume i valori imposti. la variabile i quindi è il nostro numero in base 10, che passiamo alla funzione ConvertToBase che ci ritorna il suo rispettivo valore nella base che vogliamo quindi 2, 8 16.
Con la pritf() stampiamo questo valore.

La memset() invece inizializza un area di memoria(il primo parametro della funzione) con un valore(il secondo parametro passato alla funzione) per una certa lunghezza(terzo parametro della funzione)

La itoa() invece converte un valore da int a ad alfanumerico quindi char[]
Ultima modifica effettuata da Overflow 06/02/09 15:39
aaa
06/02/09 15:45
sweetema
grazie 1000!!!non è colpa mia, sn cs ke il mio libro di testo non cita prpr(printf,memset,itoa)..xò sei stat esauriente!!!baci
aaa
06/02/09 15:52
Overflow
si forse per la printf() hai ragione, in C++ si utilizza la cout.
aaa
07/02/09 18:25
sweetema
scusa,stavo cercando di farlo in altro modo,cn cs ke ho studiato!!!ke ne pensi???
#include<iostream.h>
#include <stdio.h>


void convertToBase2(int value);
void convertToBase8(int value);
void convertToBase16(int value);
int y;

int main()
{
	cout<<"QUESTO PROGRAMMA PERMETTE DI VISUALIZZARE IN NUMERI IN DIVERSE BASI\n";
	cout<<"inserire il numero da convertire\n";
	cin>>y;
	cout<<"\nDECIMALE\tBINARIA\t\tOTTALE\t\tESADECIMALE\t\t\n";

		cout<<y<<"\t\t";
		convertToBase2(y);
		cout<<"\t\t";
		convertToBase8(y);
		cout<<"\t\t";
		convertToBase16(y);

	return 0;
}

void convertToBase2(int value)
{
		int ncount=0;
		int a[ncount];
		for(int t=0;t<10;t++)
		{
			int s=y;
			do
			{
                ncount++;
				if(s%2==0)
					a[t]=0;
				else
					a[t]=1;
			s/=2;
			}
			while(s!=0);
		}

         for(int k=ncount;k>=0;k--)
        	 {
        	 cout<<a[k];
        	 }

}

void convertToBase8(int value)
{
	        int ncount=0;
			int a[ncount];
			for(int t=0;t<10;t++)
			{
				int s=y;
				do
				{
					ncount++;
					a[t]=s%8;
				    s/=8;
				}
				while(s!=0);
			}
	         for(int k=ncount;k>=0;k--)
	        	 {
	        	 cout<<a[k];
	        	 }

}

void convertToBase16(int value)
{
	int ncount=0;
int a[ncount];
for(int t=0;t<10;t++)
{
	int s=y;
	do
	{
		int q=s/16;
		switch(q)
	             {
		            case 1:
		         	a[t]=1;
		         	break;
		           case 2:
					a[t]=2;
					break;
		           case 3:
					a[t]=3;
					break;
		           case 4:
					a[t]=4;
					break;
		           case 5:
					a[t]=5;
					break;
		           case 6:
					a[t]=6;
					break;
		            case 7:
					a[t]=7;
					break;
		           case 8:
					a[t]=8;
					break;
		           case 9:
					a[t]=9;
					break;
	                 case 10:
	                     a[t]='A';
	                     break;
	                 case 11:
	                	 a[t]='B';
	                      break;
	                 case 12:
	                	 a[t]='C';
	                     break;
	                 case 13:
	                	 a[t]='D';
	                     break;
	                 case 14:
	                	 a[t]='E';
	                     break;
	                 case 15:
	                	 a[t]='F';
	                    break;
	                 default:
	                a[t]=q;
	                 break;
		}
	    s/=16;
	}
	while(s!=0);
}


 for(int k=ncount;k>=0;k--)
	 {
	 cout<<a[k];
	 }


}
aaa