L4ky
09-12-2010, 16:53
Ho un problema. Sto frequentando il corso di Informatica e quest'anno studiamo C++. L esercizio da fare è:
Dato un numero, visualizzare tutti i numeri binari da 1 al numero di cifre inserito.
Il codice funziona fino a quando il programma genera numeri a 10 cifre, se provo con 11 non funziona più.
Inoltre vorrei unire i valori di un array in una variabile unica, ma non posso sommarle perchè sono in binario..come dispongo i valori uno dopo l'altro???
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string>
int main()
{
int x, conta, num, bnum=0, nmax=0, copiax=0;
printf("\t\t\tNUMERI IN BINARIO\n");
printf("Inserisci la quantità di cifre in binario da visualizzare: ");
scanf("%d", &x);
copiax=x;
x=2;
for(int p=1; p < copiax; p++){x *= 2;}
//printf("\n\nAHAHAH NUMERO MAX: %d\n\n", x);
int bin[x+1][20];
int dim[x+1];
int def[x+1][2];
for(int i=0; i < x; i++){for(int j=0; j < 50; j++){bin[i][j] = 0;}} // AZZERA MATRICE
for(int i=0; i < x; i++){dim[i] = 1;}
for(int i=0; i < x; i++){for(int j=0; j < 2; j++){def[i][j] = 0;}} // AZZERA MATRICE DEFINITIVA
for(num=1; num <= x+1; num++){
bnum=num;
for(conta = 0; conta < 50; conta++){
bin[num][conta] = bnum%2;
if(bnum == 1){bin[num][conta++] = 1; conta = 50;}else{
bnum = bnum / 2;}
dim[num]++;
}
conta=0;
}
printf("\n");
for(int i=1; i < x; i++){for(int j=dim[i]-1; j > 0; j--){printf("%d", bin[i][j-1]);}printf("\n");}
//for(int i=0; i < x; i++){printf("%d ", dim[i]);} // DEBUG DIMENSIONI
//for(int i=0; i < x; i++){for(int j=0; j < 100; j++){printf("%d", bin[i][j]);}} // DEBUG MATRICE
system("PAUSE");
return 0;
}
Dato un numero, visualizzare tutti i numeri binari da 1 al numero di cifre inserito.
Il codice funziona fino a quando il programma genera numeri a 10 cifre, se provo con 11 non funziona più.
Inoltre vorrei unire i valori di un array in una variabile unica, ma non posso sommarle perchè sono in binario..come dispongo i valori uno dopo l'altro???
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string>
int main()
{
int x, conta, num, bnum=0, nmax=0, copiax=0;
printf("\t\t\tNUMERI IN BINARIO\n");
printf("Inserisci la quantità di cifre in binario da visualizzare: ");
scanf("%d", &x);
copiax=x;
x=2;
for(int p=1; p < copiax; p++){x *= 2;}
//printf("\n\nAHAHAH NUMERO MAX: %d\n\n", x);
int bin[x+1][20];
int dim[x+1];
int def[x+1][2];
for(int i=0; i < x; i++){for(int j=0; j < 50; j++){bin[i][j] = 0;}} // AZZERA MATRICE
for(int i=0; i < x; i++){dim[i] = 1;}
for(int i=0; i < x; i++){for(int j=0; j < 2; j++){def[i][j] = 0;}} // AZZERA MATRICE DEFINITIVA
for(num=1; num <= x+1; num++){
bnum=num;
for(conta = 0; conta < 50; conta++){
bin[num][conta] = bnum%2;
if(bnum == 1){bin[num][conta++] = 1; conta = 50;}else{
bnum = bnum / 2;}
dim[num]++;
}
conta=0;
}
printf("\n");
for(int i=1; i < x; i++){for(int j=dim[i]-1; j > 0; j--){printf("%d", bin[i][j-1]);}printf("\n");}
//for(int i=0; i < x; i++){printf("%d ", dim[i]);} // DEBUG DIMENSIONI
//for(int i=0; i < x; i++){for(int j=0; j < 100; j++){printf("%d", bin[i][j]);}} // DEBUG MATRICE
system("PAUSE");
return 0;
}