Manugal
10-11-2005, 10:36
Ciao :)
Devo fare un programma ricorsivo che mi converta un numero in base 10 in un numero in base b. Ho provato a scrivere il codice facendo riferimento alla versione iterativa ed è venuta fuori una cosa del genere:
#include <stdio.h>
#define N 32
void cambiobase(int a[], int, int, int);
void stamparray(int a[]);
int main(void){
int num, base;
int a[N]={0};
printf("Inserisci il numero: ");
scanf("%d", &num);
printf("Inserisci la base: ");
scanf("%d", &base);
cambiobase(a, num, base, N-1);
return 0;
}
void stamparray(int a[]){
int i;
char alfabeto[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for(i=0; i<N; ++i)
printf("%c", alfabeto[a[i]]);
}
void cambiobase(int a[], int n, int b, int i){
if(n==0)
stamparray(a);
else
a[i]==n%b;
cambiobase(a,n/b,b,i-1);
}
Il problema è che in output mi da una serie infinita di 0 e devo per forza premere Ctrl-C per uscire dal programma. Dipenderà forse dal caso base? Grazie
Devo fare un programma ricorsivo che mi converta un numero in base 10 in un numero in base b. Ho provato a scrivere il codice facendo riferimento alla versione iterativa ed è venuta fuori una cosa del genere:
#include <stdio.h>
#define N 32
void cambiobase(int a[], int, int, int);
void stamparray(int a[]);
int main(void){
int num, base;
int a[N]={0};
printf("Inserisci il numero: ");
scanf("%d", &num);
printf("Inserisci la base: ");
scanf("%d", &base);
cambiobase(a, num, base, N-1);
return 0;
}
void stamparray(int a[]){
int i;
char alfabeto[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for(i=0; i<N; ++i)
printf("%c", alfabeto[a[i]]);
}
void cambiobase(int a[], int n, int b, int i){
if(n==0)
stamparray(a);
else
a[i]==n%b;
cambiobase(a,n/b,b,i-1);
}
Il problema è che in output mi da una serie infinita di 0 e devo per forza premere Ctrl-C per uscire dal programma. Dipenderà forse dal caso base? Grazie