Proposta di soluzione semplificata.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
*
*/
int main(int argc, char** argv) {
// istruzione per chi usa il compilatore Cygwin in ambiente Windows
setvbuf(stdout, 0, _IONBF, 0);
int val=0;
int base = 2;
int ris[20];
char risc[20];
printf("\nintrodurre valore da convertire ");
scanf("%d", &val);
printf("\nintrodurre base a cui convertire ");
scanf("%d", &base);
int i = 0;
int q = val;
while (q != 0) {
int r = q % base;
q = (int) q/base;
printf("\n %d", r);
switch (r) {
case 10: risc[i] = 'A';
break;
case 11: risc[i] = 'B';
break;
case 12: risc[i] = 'C';
break;
case 13: risc[i] = 'D';
break;
case 14: risc[i] = 'E';
break;
case 15: risc[i] = 'F';
break;
default: risc[i] = r+'0';
}
ris[i]=r;
i++;
}
printf("\nstampa resti calcolati\n");
int j=0;
for(j=i-1; j>=0;j--) {
printf("%d",ris[j]);
}
printf("\nstampa valori corrispondenti ai resti calcolati\n");
for(j=i-1; j>=0;j--) {
printf("%c",risc[j]);
}
return (EXIT_SUCCESS);
}