// C Source File #include #include #include #include #include #include "fctConvertisseur.h" #include #define COMMENT_STRING "2006 Olivier DREVET" #define COMMENT_PROGRAM_NAME "baz" #define COMMENT_VERSION_STRING "baz, conversion de bases de A à Z" // Main Function void _main(void) { unsigned short BaseDepart, BaseFinale; unsigned long NombreDecimal; char* TabNombre; //Chaine du nombre non decimale unsigned short PoidsMax; //Taille max de TabNombre short key = 0; FontSetSys(F_4x6); clrscr(); printf("Convertisseur de bases par Olivier DREVET\nen octobre/novembre 2006\n\n"); do { BaseDepart = BaseFinale = 0; PoidsMax = 0; TabNombre = (char *)calloc(32+1, sizeof(char)); // QUELLES SONT LES BASES ? do{ do{ printf("\nBase initiale : "); scanf("%hd", &BaseDepart); if((short)BaseDepart<=0) { printf("\nErreur, Entrez un nombre positif. \n"); } } while((short)BaseDepart<=0); do{ printf("\nBase finale : "); scanf("%hd", &BaseFinale); if((short)BaseFinale<=0) { printf("\nErreur, Entrez un nombre positif. \n"); } }while((short)BaseFinale<=0); if(BaseDepart == BaseFinale) { printf("\nErreur, les bases sont les même. "); } }while((BaseDepart == BaseFinale)||((short)BaseDepart<=0)||((short)BaseFinale<=0)); //tout les testes de rigueur pour ne pas faire planter la // ENTRER LE NOMBRE A CONVERTIR if(BaseDepart==10) { printf("\nNombre à convertir : "); do{ scanf("%ld", &NombreDecimal); if((long)NombreDecimal<0) { printf("\nErreur, \nentrez un nombre positif\n\n"); } if(NombreDecimal>LONG_MAX) { printf("\nErreur, \nvous avez entre un nombre hors limite\nLa limite pour votre systeme est de :\n%ld\n\n", LONG_MAX); } }while(((long)NombreDecimal<=0)||(NombreDecimal>LONG_MAX)); } else { printf("\nNombre à convertir \n"); scanf("%s", TabNombre); PoidsMax = strlen(TabNombre); } //APPELLE DES FONCTIONS DE CONVERSION if(BaseDepart==10) { strcpy(TabNombre, DixVersX(BaseFinale, NombreDecimal)); } else //sinon on convertie le nombre vers 10 { NombreDecimal = XversDix(BaseDepart, TabNombre, PoidsMax); if(BaseFinale != 10) //Si la base finale n'est pas 10, on utilise DixVersX { printf("___________________________________\n"); printf("Nous allons maintenant convertir vers la base %d", BaseFinale); getchar(); strcpy(TabNombre, DixVersX(BaseFinale, NombreDecimal)); } } getchar(); free(TabNombre); printf("\n Continuer / quitter "); key = ngetchx(); } while(key == 13); }