PDA

View Full Version : [C] Cambio base ricorsivo


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

Manugal
10-11-2005, 22:21
upp :rolleyes:

Manugal
11-11-2005, 10:18
Sono riuscito a togliere il problema del loop infinito, ma rimane il problema che mi stampa tutti 0. Sembra come non riuscisse a passare l'array alla funzione stampa.