codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int convertitoreBase10(long int numero_da_convertire, int base)
{
char base_digits[16]={'0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int numero_convertito[64];
int num, indice, i;
num=indice=0;
while (numero_da_convertire!=0)
{
numero_convertito[indice]=numero_da_convertire%base;
numero_da_convertire=numero_da_convertire/base;
++indice;
}
for(i=indice; i>=0; i--)
num=num+base_digits[numero_convertito[indice]]*pow(10, i);
return num;
}
int convertitoreBaseB(long int numero_da_convertire, int base)
{
int r, a[100], i, j, numero;
while(numero_da_convertire>0)
{
i++;
r=numero_da_convertire%10;
numero_da_convertire=numero_da_convertire/10;
a[i]=r;
}
numero=0;
for(j=i; j>=0; j--)
numero=numero+pow(base, j);
return numero;
}
int main()
{
int b1, b2, i;
long int n, nsp;
FILE *fp1, *fp2;
fp1=fopen("file1.txt", "r");
fp2=fopen("file2.txt", "w");
if (fp1!=NULL && fp2!=NULL)
{
fscanf(fp1, "%d %d %d", &b1, &b2, &n);
while(!feof(fp1))
{
if(b1==10)
fprintf(fp2, "%d\n", convertitoreBase10(n, b2));
else if(b2==10)
fprintf(fp2, "%d\n", convertitoreBaseB(n, b1));
else if(b1!=10 && b2!=10)
{
nsp=convertitoreBaseB(n, b1);
fprintf(fp2, "%d\n", convertitoreBase10(nsp, b2));
}
fscanf(fp1, "%d %d %d", &b1, &b2, &n);
}
fclose(fp1);
fclose(fp2);
}
else printf ("Non ho trovato il file.\n");
}