Devo creare un programma in c che dato n da tastiera, generi tranite ricorsione tutti i numeri binari composti da n bit
ES: n=3
devo creare e stampare
000
001
010
011 ecc ecc
Moderatore: Staff




function incr(limit, num)
{
stampa(num);
if ( (++num) == limit )
return;
incr(limit, num);
}


spina ha scritto:Cioè in pratica dovresti avere un array grande quanto il numero di bit ed inizializzarlo a 0000, o cose di questo tipo e poi lavorarci su?
Emanuele



#include <stdio.h>
#define SIZE 3
/* Azzera i primi i bit di a */
void reset(int i, char *a)
{
int j;
for ( j=0; j < i; j++ )
a[j] = '0';
}
/* Stampa l'array a */
void stampa(char *a)
{
int i;
for ( i=SIZE; i >= 0; i-- )
putchar(a[i-1]);
putchar('\n');
}
/* Incrementa a di uno */
void incr(char *a)
{
int i, change;
stampa(a);
for ( change=i=0; i < SIZE; i++ )
if ( a[i] == '0' )
{
a[i] = '1';
reset(i, a);
change=1;
break;
}
if ( change == 0 )
return;
incr(a);
}
int main()
{
char array[SIZE];
reset(SIZE, array);
incr(array);
return 0;
}

void incr(int *v, int N, int i)
{
int j;
if(i==N)
{
for(j=0;j<N;j++)
printf("%d", v[j]);
printf("\n");
return ;
}
else
{
v[i]=0;
incr(v, N, i+1);
v[i]=1;
incr(v, N, i+1);
}
}

N=15
Spina
------
real 2.17
user 0.03
sys 0.12
Jimmy
--------
real 2.27
user 0.01
sys 0.17
N=16
Spina
-------
real 4.75
user 0.06
sys 0.12
Jimmy
---------
real 6.16
user 0.07
sys 0.07

Visitano il forum: Nessuno e 1 ospite