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 :

[débutant] Compilation programme


Sujet :

C++

  1. #1
    Invité
    Invité(e)
    Par défaut [débutant] Compilation programme
    bonjour à toutes et à tous ,

    je suis en train de compiler un programme que j'ai créer et comme vous allez pouvoir le deviner j'ai des problème de compil je vous met mon code :

    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
    #include <iostream>
     
    #include <cstdlib>
     
    #include <cmath>
     
     
     
    using namespace std;
     
     
     
    int main()
     
    {
     
        int valeur = 0;
     
        char string [33];
     
     
     
    // initialiser le tableau 
     
     
     
        for (int i = 0 ; i < 32 ; ++i) string [i] = '0'; 
     
     
     
    // début du code 
     
     
     
        cout <<"entrer la valeur à convertir"<<"\n";
     
        cin  >> valeur;
     
     
     
        int j = 0; 
     
     
     
        while (valeur > 2 ) 
     
     
     
        { 
     
            int reste = valeur %2;
     
     
     
    //convertir en décimal --> binaire 
     
     
     
            valeur = valeur/2 ; 
     
                string [31-j]+48 = reste;
     
     
     
            j++; 
     
        }
     
     
     
    // affichage tableau 
     
     
     
        string [31-j] valeur + 48; 
     
        for ( int i = 0; i < 32; i++) 
     
        cout << string [i] << "\n";
    }
    voici les erreurs que ça me donne :

    jeremy@jeremy-desktop:~$ g++ ascii.cpp -o ascii -Wall
    ascii.cpp: In function ‘int main()’:
    ascii.cpp:31: erreur: lvalue required as left operand of assignment
    ascii.cpp:38: erreur: expected `;' before ‘valeur’
    ascii.cpp:38: attention : statement n'a pas d'effet
    apparemment j'ai des erreurs au niveau de ces 2 lignes :

    string [31-j]+48 = reste; --> 31

    string [31-j] valeur + 48; --> 38

    je ne vois vraiment pas ce qui cloche si une âme charitable pourrait m'aider ce serais vraiment sympas

    merci d'avance

  2. #2
    Membre chevronné

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Par défaut
    Bonjour

    Il est assez difficile de vous aider ici, car ce que vous voulez faire n'est pas très clair. En C++, dans une expression "a=b;", le programmeur exprime qu'il veut calculer l'état de b, puis recopier ceci dans l'endroit indiqué par a.

    Dans votre cas, pour la ligne 31, on voit bien que b serait le "reste", mais il est difficile de deviner où vous souhaitez stocker ce "reste" d'après votre écriture de a: "string [31-j]+48". "string [31-j]" indiquerait bien d'un emplacement mémoire, mais alors que signifie le +48? C'est ce qui gène le compilateur lorsqu'il annonce "lvalue required as left operand of assignment": il voudrait une "lvalue", soit dans ce cas un emplacement pour stoker la partie droite de l'affectation, qui elle est bien définie.

    Quant à la ligne 38, "string [31-j] valeur + 48;", sa signification m'échappe complètement. Il ne s'agit pas d'une affectation, ni d'un appel de fonction, ni d'une déclaration de variable... En tant que lecteur humain je ne comprends pas ce que vous voulez faire, donc le compilateur, qui est bien plus strict, est encore plus paumé.

    Il y a d'autres soucis dans votre code par ailleurs (l'utilisation de tableaux bruts ne peut que vous apporter des ennuis considérant que vous débutez), mais je vous recommande de regarder d'abord un livre expliquant certains concepts comme les déclarations, les affectations, et les appels de fonction.

  3. #3
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    comme ça devrait marcher.

    j'ai renomé string en binaryArray car le nom est trop proche d'un nom de type existant.
    ensuite il y'avait des coquilles dans les affectation
    binaryArray [31-j] + 48 = valeur ; ===> binaryArray [31-j] = valeur + 48;


    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
     
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
     
    using namespace std;
     
    int main() {
     
        int valeur = 0;
        // initialiser le tablean
        char binaryArray [33] = {'0',};
     
        cout <<"entrer la valeur à convertir"<<"\n";
     
        cin  >> valeur;
     
        int j = 0; 
        while (valeur > 2 ) { 
     
          // Reste = 0,1
          int reste = valeur %2;
     
          //convertir en décimal --> binaire 
          valeur = valeur/2 ; 
          binaryArray [31-j] = reste + 48;
          j++; 
     
        }
     
    // affichage tableau 
     
        binaryArray [31-j] = valeur + 48; 
     
        for ( int i = 0; i < 32; i++) 
     
        cout << binaryArray [i] << "\n";
    }
    Autrement
    En fouillant sur le net j'ai trouvé cette solution qui me semble assez jolie (elle joue avec les Template et les décalage de bit, j'y ai ajouté quelques commentaires:
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    #include <iostream> 
     
     
     
    // positionne le premier bit du type T a 1
    template < typename T >
    inline T highbit(T& t)
    {
      return t = (((T)(-1)) >> 1) + 1;
    }
     
    // pour notre cas typename est un unsigned long
    template < typename T >
    std::ostream& bin(T& value, std::ostream &o)
    {
      // boucle partant du bit de poid fort
      // et decalant progressivement vers le bit de poid faible.
      // exemple sur un type a 4 bits
      // iteration 1 : bit =  1000
      // iteration 2 : bit =  0100
      // iteration 3 : bit =  0010
      // iteration 4 : bit =  0001
      for ( T bit = highbit(bit); bit; bit >>= 1 ) {
     
        // Utilisation de l'operateur ternaire
        // equivalent à if (value & bit) { return '1';} else {return '0';} 
          o << ( ( value & bit ) ? '1' : '0' );
        }
      return o;
    }
     
     
     
    int main() 
    {
      unsigned long long hb;
      unsigned long      value0 = 0;
      unsigned int       value1 = 1;
      long long          value2 = -72;
      long               value3 = -256;
      unsigned int       value4 = 8;
      unsigned long      value5 = 255;
      unsigned long long value6 = 71256688;
     
      std::cout << "highbit:" << std::endl;
      highbit(hb);
      std::cout << "hex: " << std::hex << hb << std::endl;
      std::cout << "dec: " << std::dec << hb << std::endl;
      std::cout << "oct: " << std::oct << hb << std::endl;
      std::cout << "bin: ";
      bin(hb, std::cout);
      std::cout << std::endl;
     
      std::cout << "value0:" << std::endl;
      std::cout << "hex: " << std::hex << value0 << std::endl;
      std::cout << "dec: " << std::dec << value0 << std::endl;
      std::cout << "oct: " << std::oct << value0 << std::endl;
      std::cout << "bin: ";
      bin(value0, std::cout);
      std::cout << std::endl;
     
      std::cout << "value1:" << std::endl;
      std::cout << "hex: " << std::hex << value1 << std::endl;
      std::cout << "dec: " << std::dec << value1 << std::endl;
      std::cout << "oct: " << std::oct << value1 << std::endl;
      std::cout << "bin: ";
      bin(value1, std::cout);
      std::cout << std::endl;
     
      std::cout << "value2:" << std::endl;
      std::cout << "hex: " << std::hex << value2 << std::endl;
      std::cout << "dec: " << std::dec << value2 << std::endl;
      std::cout << "oct: " << std::oct << value2 << std::endl;
      std::cout << "bin: ";
      bin(value2, std::cout);
      std::cout << std::endl;
     
      std::cout << "value3:" << std::endl;
      std::cout << "hex: " << std::hex << value3 << std::endl;
      std::cout << "dec: " << std::dec << value3 << std::endl;
      std::cout << "oct: " << std::oct << value3 << std::endl;
      std::cout << "bin: ";
      bin(value3, std::cout);
      std::cout << std::endl;
     
      std::cout << "value4:" << std::endl;
      std::cout << "hex: " << std::hex << value4 << std::endl;
      std::cout << "dec: " << std::dec << value4 << std::endl;
      std::cout << "oct: " << std::oct << value4 << std::endl;
      std::cout << "bin: ";
      bin(value4, std::cout);
      std::cout << std::endl;
     
      std::cout << "value5:" << std::endl;
      std::cout << "hex: " << std::hex << value5 << std::endl;
      std::cout << "dec: " << std::dec << value5 << std::endl;
      std::cout << "oct: " << std::oct << value5 << std::endl;
      std::cout << "bin: ";
      bin(value5, std::cout);
      std::cout << std::endl;
     
      std::cout << "value6:" << std::endl;
      std::cout << "hex: " << std::hex << value6 << std::endl;
      std::cout << "dec: " << std::dec << value6 << std::endl;
      std::cout << "oct: " << std::oct << value6 << std::endl;
      std::cout << "bin: ";
      bin(value6, std::cout);
      std::cout << std::endl;
      system("pause");
      return 0; 
    }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    voici votre programme avec quelques modifications :

    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
    #include <iostream>
    #include <cstdlib>
    //#include <cmath>
    using namespace std;
    int main()
    {
        	int valeur = 0	;
    //---------> string est un type de déclaration exemple : string unmot = "cemot" ; 
        	char notstring[33];
    	int j = 0	;
    // initialiser le tableau 
       	for (int i = 0 ; i < 32 ; ++i)
    	{ notstring[i] = '0'; } 
    // début du code 
        	cout << "\nEntrez la valeur à convertir : " << flush ;
        	cin  >> valeur ;
       	while (valeur > 0 ) 
       	{ 
    //convertir en décimal --> binaire 
    //---------> teste de la valeur "valeur modulo 2 == 0" est vrai 
             	if ( valeur % 2 == 0)
     		{	notstring[31-j] = '0' ; }
    		else
    		{	notstring[31-j] = '1' ; } 
          		valeur = valeur/2 ; 
               	j++; 
    	}
    // affichage tableau 
    	for ( int i = 0; i < 32; i++) 
        	{	cout << notstring[i]  ; 
    		if ( (i+1) % 4 == 0)
    		{ cout << " " ; }
    	}
    cout << endl ;
    return 0 ;
    }
    ...aurevoir.....
    Dernière modification par Invité ; 12/11/2009 à 18h22. Motif: affichage

Discussions similaires

  1. Bibliographie du parfait débutant en Programmation
    Par Switch28 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 26/09/2005, 14h23
  2. [vidéo] Débutant en programmation vidéo
    Par FFF dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 01/09/2005, 13h46
  3. [Débutant] [Compilation] Avertissement deprecated
    Par javamantools dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2005, 15h33
  4. [Débutant]Compilation d'un fichier .java
    Par adilou1981 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 15/04/2005, 14h46
  5. [Débutante] Compréhension programme - mode debug
    Par bolo dans le forum Assembleur
    Réponses: 14
    Dernier message: 07/01/2005, 18h33

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