IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Convertisseur decimal/binaire qui se compile et marche avec VisualC++, mais pas sous devC++


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Convertisseur decimal/binaire qui se compile et marche avec VisualC++, mais pas sous devC++
    Salut à tous !

    Comme dit dans le titre, mon code se compile sous visualC++, mais pas sous DevC++ et c'est embêtant, car j'utilise beaucoup plus fréquemment DevC++...

    Voici le code en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    #include <stdio.h>
    #include <stdlib.h>
     
    void FindBinFromDec(int decimalValue);
    void CalculateNumberOfBinValue(int decimalValue, int *numberOfBinValue_);
     
    int main(int argc, char *argv[])
    {
      int numberDec, numberBin, numberOfBinValue_;
     
      printf("Entrez un nombre: ");
      scanf("%ld", &numberDec);
      CalculateNumberOfBinValue(numberDec, &numberOfBinValue_);
      if (numberDec <= 4095) printf("En binaire, le nombre %ld s'ecrit: ", numberDec);
      FindBinFromDec(numberDec, numberOfBinValue_);
     
      return 0;
    }
     
    void FindBinFromDec(int decimalValue, int numberOfBinValue)
    {
    	int *binValueInArray = malloc(numberOfBinValue * sizeof(int));
    	int i = numberOfBinValue;
    	while(i > 0)
    	{
    		binValueInArray[i] = decimalValue % 2;
    		decimalValue = decimalValue / 2;
    		i--;
    	}
    	i = 1;
    	while(i <= numberOfBinValue)
    	{
    		printf("%ld", binValueInArray[i]);
    		i++;
    	}
    	printf("\n");
     
    }
     
    void CalculateNumberOfBinValue(int decimalValue, int *numberOfBinValue_)
    {
     
    	if (decimalValue == 0 || decimalValue == 1)
    	{
    	  *numberOfBinValue_ = 1;
    	}
    	else if (decimalValue == 2 || decimalValue == 3)
    	{
    	  *numberOfBinValue_ = 2;
    	}
    	else if (decimalValue >= 4 && decimalValue <= 7)
    	{
    	  *numberOfBinValue_ = 3;
    	}
    	else if (decimalValue >= 8 && decimalValue <= 15)
    	{
    	  *numberOfBinValue_ = 4;
    	}
    	else if (decimalValue >= 16 && decimalValue <= 31)
    	{
    	  *numberOfBinValue_ = 5;
    	}
    	else if (decimalValue >= 32 && decimalValue <= 63)
    	{
    	  *numberOfBinValue_ = 6;
    	}
    	else if (decimalValue >= 64 && decimalValue <= 127)
    	{
    	  *numberOfBinValue_ = 7;
    	}
    	else if (decimalValue >= 128 && decimalValue <= 255)
    	{
    	  *numberOfBinValue_ = 8;
    	}
    	else if (decimalValue >= 256 && decimalValue <= 511)
    	{
    	  *numberOfBinValue_ = 9;
    	}
    	else if (decimalValue >= 512 && decimalValue <= 1023)
    	{
    	  *numberOfBinValue_ = 10;
    	}
    	else if (decimalValue >= 1024 && decimalValue <= 2048)
    	{
    	  *numberOfBinValue_ = 11;
    	}
    		else if (decimalValue >= 2049 && decimalValue <= 4095)
    	{
    	  *numberOfBinValue_ = 12;
    	}
    	else
    	{
    	  printf("Le programme ne prend en compte seulement les valeur comprises entre 0 et 4095\n");
    	}
    }
    Merci d'avance !


    EDIT: les erreurs^^


    1>------ Début de la génération*: Projet*: Nom Complet, Configuration*: Debug Win32 ------
    1>Compilation en cours...
    1>main.c
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(12) : error C2143: erreur de syntaxe*: absence de ';' avant 'type'
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(13) : error C2065: 'nbMembres'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(14) : error C2275: 'AgeNom'*: utilisation non conforme de ce type comme expression
    1> c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\struct.h(4)*: voir la déclaration de 'AgeNom'
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(14) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'famille'
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(14) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(14) : error C2065: 'nbMembres'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(14) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(15) : error C2065: 'nbMembres'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(18) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(18) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(20) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(20) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(22) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(22) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(23) : error C2065: 'nbMembres'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(26) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(26) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(29) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(29) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(31) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(31) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(37) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(37) : error C2109: un indice requiert un type tableau ou pointeur
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(39) : error C2065: 'famille'*: identificateur non déclaré
    1>c:\users\voldemort09\documents\visual studio 2008\projects\nom complet\nom complet\main.c(39) : error C2109: un indice requiert un type tableau ou pointeur
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Users\Voldemort09\Documents\Visual Studio 2008\Projects\Nom Complet\Nom Complet\Debug\BuildLog.htm"
    1>Nom Complet - 25 erreur(s), 0 avertissement(s)
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Salut

    Si ça compile sous Visual, ce n'est pas normal. Avec MinGW, voici ce que ça me donne :
    gcc -Wall -Wextra -ansi -O -Wwrite-strings -Wstrict-prototypes -Wuninitialized -Wunreachable-code exemple.c -o exemple.exe
    exemple.c: In function `main':
    exemple.c:13: warning: long int format, int arg (arg 2)
    exemple.c:15: warning: long int format, int arg (arg 2)
    exemple.c:16: error: too many arguments to function `FindBinFromDec'
    exemple.c:10: warning: unused variable `numberBin'
    exemple.c: At top level:
    exemple.c:8: warning: unused parameter 'argc'
    exemple.c:8: warning: unused parameter 'argv'
    exemple.c:22: error: conflicting types for 'FindBinFromDec'
    exemple.c:5: error: previous declaration of 'FindBinFromDec' was here
    exemple.c:22: error: conflicting types for 'FindBinFromDec'
    exemple.c:5: error: previous declaration of 'FindBinFromDec' was here
    exemple.c: In function `FindBinFromDec':
    exemple.c:34: warning: long int format, int arg (arg 2)
    exemple.c:97:2: warning: no newline at end of file
    De toute façon, DevC++ n'est plus maintenu depuis belle lurette, il est obsolète. Remplace-le par Code:Blocks ou autre.

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour jeroman,votre code est correct il faut juste modufier la ligne:
    int *binValueInArray = malloc(numberOfBinValue * sizeof(int*));
    par
    int *binValueInArray = (int*)malloc( numberOfBinValue * sizeof(int));
    ET ajouter getch() et <conio.h>
    et modifier:
    void FindBinFromDec(int decimalValue, int numberOfBinValue);
    ilte faut deux argument
    voici le code sous devc++:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    #include <stdio.h>
    #include <stdlib.h>
    #include<conio.h>
    void FindBinFromDec(int decimalValue, int numberOfBinValue);
    void CalculateNumberOfBinValue(int decimalValue, int *numberOfBinValue_);
     
    int main(int argc, char *argv[])
    {
      int numberDec, numberBin, numberOfBinValue_;
     
      printf("Entrez un nombre: ");
      scanf("%ld", &numberDec);
      CalculateNumberOfBinValue(numberDec, &numberOfBinValue_);
      if (numberDec <= 4095) printf("En binaire, le nombre %ld s'ecrit: ", numberDec);
      FindBinFromDec(numberDec, numberOfBinValue_);
        getch();    
      return 0;
      getch();
    }
     
    void FindBinFromDec(int decimalValue, int numberOfBinValue)
    {
    	int *binValueInArray  = (int*)malloc( numberOfBinValue * sizeof(int));
     
    	int i = numberOfBinValue;
    	while(i > 0)
    	{
    		binValueInArray[i] = decimalValue % 2;
    		decimalValue = decimalValue / 2;
    		i--;
    	}
    	i = 1;
    	while(i <= numberOfBinValue)
    	{
    		printf("%ld", binValueInArray[i]);
    		i++;
    	}
    	printf("\n");
     
    }
     
    void CalculateNumberOfBinValue(int decimalValue, int *numberOfBinValue_)
    {
     
    	if (decimalValue == 0 || decimalValue == 1)
    	{
    	  *numberOfBinValue_ = 1;
    	}
    	else if (decimalValue == 2 || decimalValue == 3)
    	{
    	  *numberOfBinValue_ = 2;
    	}
    	else if (decimalValue >= 4 && decimalValue <= 7)
    	{
    	  *numberOfBinValue_ = 3;
    	}
    	else if (decimalValue >= 8 && decimalValue <= 15)
    	{
    	  *numberOfBinValue_ = 4;
    	}
    	else if (decimalValue >= 16 && decimalValue <= 31)
    	{
    	  *numberOfBinValue_ = 5;
    	}
    	else if (decimalValue >= 32 && decimalValue <= 63)
    	{
    	  *numberOfBinValue_ = 6;
    	}
    	else if (decimalValue >= 64 && decimalValue <= 127)
    	{
    	  *numberOfBinValue_ = 7;
    	}
    	else if (decimalValue >= 128 && decimalValue <= 255)
    	{
    	  *numberOfBinValue_ = 8;
    	}
    	else if (decimalValue >= 256 && decimalValue <= 511)
    	{
    	  *numberOfBinValue_ = 9;
    	}
    	else if (decimalValue >= 512 && decimalValue <= 1023)
    	{
    	  *numberOfBinValue_ = 10;
    	}
    	else if (decimalValue >= 1024 && decimalValue <= 2048)
    	{
    	  *numberOfBinValue_ = 11;
    	}
    		else if (decimalValue >= 2049 && decimalValue <= 4095)
    	{
    	  *numberOfBinValue_ = 12;
    	}
    	else
    	{
    	  printf("Le programme ne prend en compte seulement les valeur comprises entre 0 et 4095\n");
    	}
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    J'ai essayer avec Code:Blocks, et j'ai les mêmes erreurs que toi.
    Y aurai-t-il une solution ?

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour
    ca marche chez moi,
    Images attachées Images attachées  

  6. #6
    Membre actif Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Points : 223
    Points
    223
    Par défaut
    Vous avez fait une erreur avec la fonction FindBinFromDec,
    Le prototype ne correspond pas à la déclaration de la fonction, le prototype a un argument , la déclaration a 2 arguments.

    void FindBinFromDec(int decimalValue);
    et

    void FindBinFromDec(int decimalValue, int numberOfBinValue)
    C'est d'ailleurs explicitement dit pas ces quatre lignes d'erreurs:
    exemple.c:22: error: conflicting types for 'FindBinFromDec'
    exemple.c:5: error: previous declaration of 'FindBinFromDec' was here
    exemple.c:22: error: conflicting types for 'FindBinFromDec'
    exemple.c:5: error: previous declaration of 'FindBinFromDec' was here

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Merci de toute vos réponses, ça marche !

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 81
    Points : 128
    Points
    128
    Par défaut
    Une autre solution pour convertir un nombre décimal en binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int number = 0;
    unsigned int mask = 0x80000000;
     
    printf("Saisir un nombre : ");
    scanf("%d", &number);
     
    printf("\nEn binaire, le nombre %d s'ecrit : ", number);
     
    while (mask)
    {
       putchar(number & mask ? '1' : '0');
       mask >>= 1;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Serveur COM marche avec .cpp mais pas avec .lib
    Par sylvain.cool dans le forum C++
    Réponses: 4
    Dernier message: 26/06/2008, 10h54
  2. [MySQL] requête qui marche avec phpmyadmin mais pas en php
    Par KoosMos dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/02/2008, 11h00
  3. Soft marche avec Jdeveloper mais pas avec Apache
    Par haifa28 dans le forum JDeveloper
    Réponses: 1
    Dernier message: 05/06/2007, 13h58
  4. [Apache2] Ca marche avec Firefox mais pas avec IE
    Par Barnabo dans le forum Apache
    Réponses: 1
    Dernier message: 15/03/2007, 11h07
  5. Sa marche avec Firefox mais pas avec IE ?
    Par boolat dans le forum Flash
    Réponses: 1
    Dernier message: 30/10/2006, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo