CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

demande d'aide programme debutant en C++

plisken4
plisken4
Niveau 5
01 mai 2015 à 17:57:40

Bonjour,
J'essaye de faire un simple programme de conversion d'un entier vers du binaire mais j'ai du mal a traduire l'algo sur certaines parties, notamment je ne sais pas par quoi remplacer la fonction str et je ne sais pas comment concatener ddes variables.

voici mon programme :
https://image.noelshack.com/fichiers/2015/18/1430495849-sans-titre.jpg

merci :)

Tikim
Tikim
Niveau 21
01 mai 2015 à 19:46:46

Déjà y'a un problème avec la variable 'binaire'. Tu veux que ce soit une chaîne de caractère non ? Là si c'est un char, c'est UN SEUL caractère. Il faut en faire un tableau de char, que je te conseille de mettre sous la forme de char*.

Ensuite quand tu fais 'binaire = str(nb%2) + binaire' tu oublies justement que tu travailles avec une variable de type 'char'. Un char c'est rien d'autre qu'un nombre entier en fait qui représente le code ASCII d'un caractère. Quand tu additionnes deux char, tu additionnes deux codes ASCII. Le code ASCII de '0' vaut 48, donc si tu additionnes (en char, donc) '0' + '0' tu obtiens 48+48 = 96, soit le code ASCII du caractère ' ` '.

Je réfléchis un peu et je te donne une structure de code qui devrait fonctionner mieux.

Tikim
Tikim
Niveau 21
01 mai 2015 à 20:02:26

Voici mon code :

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main()
{


    int nb = 0;
    char* binaire;
    int taille = 0;
    int index = 0;

    cout << "Entrer un nombre : " << endl;
    cin >> nb;

    if(nb < 0)
    {
        return -1;
    }

    //Déterminer la taille du tableau
    while(pow(2,taille) < nb)
    {
        taille++;
    }

    //Allocation mémoire
    binaire = (char*) malloc((taille+1)*sizeof(char));
    if(binaire == NULL)
    {
        return -1;
    }

    //Initialisation du tableau
    for(int i = 0; i < taille; i++)
    {
        *(binaire+i) = ' ';
    }

    //On remplit avec les caractères
    while(nb!=0)
    {
        if(nb%2==0)
        {
            *(binaire + taille - index) = '0';
        }
        else
        {
            *(binaire + taille - index) = '1';
        }
        nb = nb/2;
        index++;
    }
    *(binaire + taille + 1) = '\0';

    //On affiche
    cout << endl << nb << " en binaire s'écrit : " << binaire << endl;

    free(binaire);
    return 0;
}

Sur pastebin : http://pastebin.com/WnNbWi9z

J'espère que ça reste propre, j'ai pas fait de C++ depuis des plombes, je code principalement en C embarqué.

[Nolimitee]
[Nolimitee]
Niveau 7
01 mai 2015 à 20:25:39

int		main(void)
{
 // str qui va contenir notre résultat en binaire
	std::string bin;
 // une valeur décimale à convertir en binaire
	int res = 10;
	
// tant que res est supérieur à 0
	while (res > 0)
	{
 // on rajoute le LSB (bit de poids faible) au début de la chaine
// puis on fait un +48 pour obtenir sa valeur en ascii (c.f table ascii)
		bin.insert(bin.begin(), (res & 1) + 48);
 // on décalle notre resultat de 1 vers la droite pour obtenir le LSB suivant
		res = res >> 1;
	}

	std::cout << bin << std::endl;
	return (0);
}
Message édité le 01 mai 2015 à 20:30:05 par [Nolimitee]
plisken4
plisken4
Niveau 5
03 mai 2015 à 16:19:09

merci a vous ça va bien m'aider !

plisken4
plisken4
Niveau 5
03 mai 2015 à 17:41:27

Bon du coup je vais essayer de faire un petit programme complet avec un petit menu qui permet de convertir un décimal vers hexadécimal et inversement.

Déjà voici l'algo que je viens de faire, il n'est pas complet il manque la partie hexa vers décimal, je préfère déjà valider la première partie.
Par contre la j'ai comme résultat une chaine de chiffres, je fais comment pour que 10 = A par exemple?

Programme conversion
choix : caractère
hexa : chaine
nb, k : entier

debut
    //boucle sur le menu
    Choix ← ‘’Z’’
    Tantque choix <> ‘’Q’’ et choix <> ‘’q’’
        
        //menu
        Afficher ‘’ conversion decimal vers hexadecimal…………1’’
        Afficher ‘’conversion hexadecimal vers decimal………….2’’
        Afficher ‘’quitter………………………………………………………….Q’’
        Saisir choix

        //conversion entier vers hexadecimal
        Si choix = ‘’1’’ alors
            Hexa ← ‘’ ‘’
            Afficher ‘’entrer un entier = ‘’
            Saisir nb
            Tantque nb <> 0
                hexa ←str(nb mod 2) + hexa
                nb ←nb div 16
            fin tantque
            afficher ‘’conversion en hexadecimal = ‘’ + hexa
        sinon

          //conversion hexadecimal vers decimal
Tikim
Tikim
Niveau 21
04 mai 2015 à 16:49:53

La méthode la plus simple c'est un switch avec les 16 cas (ou les chiffres + les 6). Après ya sûrement moyen d'être plus élégant et efficace mais ça c'est à toi de trouver l'optimisation :o))

plisken4
plisken4
Niveau 5
09 mai 2015 à 20:11:51

un switch? j’insère ça comment dans mon algo?

plisken4
plisken4
Niveau 5
14 mai 2015 à 12:03:20

:up:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment