Green Cappy
Green Cappy

Reputation: 39

Program to convert bases in C doesn't work for some reason

It should work but it doesn't for some reason. For a number 8 and base 3 it prints "28" for example. Only the first digit is right.

Here is the function code (puissance = power, nombre = number, base = base, chiffre = digit):

#include <stdio.h>
#include "m11.h"

void conversion(unsigned long nombre, unsigned int base) 
{
    //coder votre fonction ici
    /*l'écriture en base b de l'entier n pour b inférieur ou égal à 10 (on pourra essayer pour b <= 36 dans un second temps) avec un retour à la ligne. Attention aux valeurs extrêmes*/
    //de base 10 en base b
    
    //d abord on trouve le nombre le plus grand
    int puissance=1;
    while ((puissance)<=nombre) //on va mettre la base dans la puissance jusqu'a ce que le nombre va etre plus grand que le nombre
    {
        puissance=puissance*base;
    }
    puissance=puissance/base; //psk le nombre normal est tro grand
    
    while (puissance>=1) //divisions euclidiennes
    {
        int chiffre = nombre/puissance; //on conserve le quotient comme le chiffre a afficher
        int nombre = nombre%puissance; //on conserve le reste et on fait les operations sur le reste
        
        printf("%d",chiffre);
        //printf("%d",chiffre); //on affiche notre chiffre
        
        puissance=puissance/base; //on decremente la puissance

        //la boucle est pas juste...
    }
    printf("\n");
}

Upvotes: 1

Views: 72

Answers (1)

Green Cappy
Green Cappy

Reputation: 39

I figured this out.

{
        int chiffre = nombre/puissance; //on conserve le quotient comme le chiffre a afficher
        *int* nombre = nombre%puissance; //on conserve le reste et on fait les operations sur le reste
}

I need to remove this int because I need to change the value of number and when I redefine it instead it creates errors.

Upvotes: 2

Related Questions