All pastes #255149 Raw Edit

chtitux

public c v1 · immutable
#255149 ·published 2006-11-22 18:10 UTC
rendered paste body
/* Convetisseur base 10 -> base x en base 2, jusqu'à (2^30) 1 073 741 823 int -> 2^32*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>/* Convertit de la base 10 à la base x */void converttobase (int nombre, const int base, char * test) {	int resultat = 0, i, j , k;	char convert[2] ;	int i_old = -1;	while (nombre > 0) {		i = 0;		j = 0;		while (nombre >= pow(base,i+1)) {			i++;		}		while (nombre >= (j+1)*pow(base,i)) {			j++;		}		resultat += j*pow(10,i);		for ( k = i; k < i_old; k++) {			strcat(test ,"0");		}		sprintf(convert,"%d",j);		strcat(test ,convert);		nombre -= j*pow(base,i);		i_old = i - 1;	}	/* Ajout de 0 après le dernier nombre */	int kfin;	for (kfin = 0; kfin <= i_old; kfin++) {		strcat(test ,"0");	}}/* Covertit un nombre de la base x vers ka base 10 */int convertfrombase(int nombre, const int base ) {	int i,j,machin = 0;	while (nombre > 0) {	i = 0;	j = 0;		while (nombre >= pow(10,i+1)) {			i++;		}		while (nombre >= (j+1)*pow(10,i)) {			j++;		}		machin += j*pow(base,i);		nombre -= j*pow(10,i);	}	return machin;}int main(int argc, char* argv[]){	int nombre;	/* nombre en base (10 ou x) */	int basefrom;	/* base cible */	int baseto;	/* base du nombre, facultatif */		/* nombre en base 10 */	char reponse[50] = "";	int base10;	base10 = 0;	if(argc < 3)		exit(1);	nombre = atoi(argv[1]);	baseto = atoi(argv[2]);	switch(argc)	{	case 3:		converttobase(nombre,baseto,reponse);		printf("%d en base %d = %s\n",nombre,baseto,reponse);		exit(0);	case 4:		basefrom = atoi(argv[3]);		/* conversion /nombre/ /baseto/ -> /base 10/ */		base10 = convertfrombase(nombre,basefrom);		printf("%d en base %d = %d en base 10, ",nombre,basefrom,base10); 		converttobase(base10,baseto,reponse);		printf("%d en base %d = %s\n",base10,baseto,reponse); 		exit(0);	default:		printf("Utilisation: %s [entier] [base] ([base cible])\n",argv[0]);		exit(1);	}}