﻿#============================================================
# Conversion d'un entier en base B vers la base 10
#============================================================

def convb10():

    # Titre
    print("****************************************************")
    print("*                                                  *")
    print("* Conversion d'un entier en base B vers la base 10 *")
    print("*                                                  *")
    print("****************************************************")
    print()

#    liste = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    texte1 = "0123456789ABCDEF"
    texte2 = "ABCDEF"
    texte3 = "0123456789"
    nb_10 = 0

    # Saisies de la base B de départ
    base_ok = False

    b=int(input("Saisir la base B de départ : "))
    if 2<=b<=10 or b == 16 :
        print("Base B = ",b)
        base_ok=True
    else :
        print("Base B = ",b," non gérée !")

#   Conversion
    if base_ok == True :
#       Saisie de l'entier à convertir en base 10
        nb_b=str(input("Saisir l'entier à convertir en base 10 : "))
        print("Entier en base B = ",b," à convertir en base 10 : ",nb_b)
#       Contrôle de l'entier à convertir en base 10
        n = len(nb_b)
        nb_ok = True
        i = 0
        while i < n and nb_ok == True :
            car = nb_b[n-i-1]
            car_ok = False
#           Vérification si car est l'un des 16 caractères valides
            for c in texte1 :
                if c == car :
                    car_ok = True
#           Vérification de la cohérence de car avec B<>16
            if b != 16 and car_ok == True:
#               Vérification de la cohérence de car avec une base B<=10
                for c in texte2 :
                    if c == car :
                        car_ok = False
#               Vérification de la cohérence de car avec la base B
                for c in texte3 :
                    if c == car :
                        int_car=int(car)
                        if int_car >= b :
                            car_ok = False
#           Invalidation éventuelle des i+1 premiers caractères du nombre saisie
            if car_ok == False :
                nb_ok = False
#            print("i= ",i," car = ",car," car_ok = ",car_ok," nb_ok = ",nb_ok)
            i = i + 1

#       Conversion
        if nb_ok == True :
            som = 0
            for i in range(n):
                car = nb_b[i]
                if car == 'A' :
                    chiffre = 10
                elif car == 'B' :
                    chiffre = 11
                elif car == 'C' :
                    chiffre = 12
                elif car == 'D' :
                    chiffre = 13
                elif car == 'E' :
                    chiffre = 14
                elif car == 'F' :
                    chiffre = 15
                else :
                    chiffre = int(car)
#                print(" i = ",i," car = ",car," chiffre = ",chiffre)
                som = som + chiffre * (b**(n-i-1))
            nb_10 = som

#           Résultat final
            print("Entier converti de la base B =",b," dans la base 10: ",nb_10)
            print()

        else :
            print("Le nombre saisi ",nb_b," n'est pas écrit dans la base B =",b)
            print("Conversion impossible")

    print("Fin programme")

    return None
