Topic de Disboard :

Need expert en Shell bash

Salut.

J'ai un devoirs à rendre en Shell bash mais je n'y arrive pas et je ne comprend d'ailleurs pas pourquoi mon code plante :(

Le but est de faire un script qui convertis un nombre décimale en nombre binaire et inversément, la je m'occupe de la partie décimale > binaire

C'est une syntaxe assez basique mais pour le moment on à appris ça comme ça donc prenez le en compte :

" #!/bin/bash " (Je met entre "" car sinon ça met une puce sur JVC)

tab=(0 0 0 0 0 0 0 0)
i=0

echo "Entrer un nombre : "
read nombre

while [ nombre > 0 ]
do
tab[i]=nombre%2
nombre=nombre/2
((i++))
done

echo "Le nombre binaire est = "

while [ i >= 0 ]
do
echo ${tab[i]}
((i--))
done

Je comprend pas pourquoi ça marche pas :(

J'ai remarquer que selon l'espace que je met dans l'incrémentation du nombre dans le while ça plantais :(

J'ai aussi l'impression que le i++ et i-- ne marche pas :(

ta première boucle est infini (comme moi https://image.noelshack.com/fichiers/2020/11/1/1583781173-boucltempjesus.png ) car ta variable est toujours > 0

nombre n'est pas incrémenté

Le 25 mai 2021 à 17:15:24 :
ta première boucle est infini (comme moi https://image.noelshack.com/fichiers/2020/11/1/1583781173-boucltempjesus.png ) car ta variable est toujours > 0

nombre n'est pas incrémenté

Comment ça? Il est incrémenté avec " nombre=nombre/2 " et finit par tomber à 0 / en dessous de 0 non? Doit y avoir un truc que je comprend pas dans l'incrémentation :(

ah oui j'ai dit de la merde, je vais essayer ton programme

ta essaeyr

while(isset(boucle)){

echo 'Cette 10/10 sur 10 ?';

}

c'est un problème de syntaxe, je règle ça

Le 25 mai 2021 à 17:41:05 :
c'est un problème de syntaxe, je règle ça

Merci !

#!/bin/bash 

tab=(0 0 0 0 0 0 0 0)
i=8 #!taille de ton tableau

echo "Entrer un nombre : "
read nombre


while (($nombre!=0))
do
    tab[i]=$(($nombre%2))
    nombre=$(($nombre/2))
    let i-- #!décrémente car sinon ça écrit le binaire dans l'ordre inverse
done

echo $nombre en binaire vaut ${tab[@]} #!on affiche tab

Le 25 mai 2021 à 17:50:32 :
<code>#!/bin/bash

tab=(0 0 0 0 0 0 0 0)
i=8 #!taille de ton tableau

echo "Entrer un nombre : "
read nombre

while (($nombre!=0))
do
tab[i]=$(($nombre%2))
nombre=$(($nombre/2))
let i-- #!décrémente car sinon ça écrit le binaire dans l'ordre inverse
done

echo $nombre en binaire vaut ${tab[@]} #!on affiche tab</code>

Merci ! T'a pas une petite astuce pour enlever les espaces entre chaque 0 et 1 dans le résultat binaire?

Et j'affichais le résultat avec une boucle ,tu crois que c'est possible de la garder ?

Le 25 mai 2021 à 18:03:32 Disboard a écrit :

Le 25 mai 2021 à 17:50:32 :
<code>#!/bin/bash

tab=(0 0 0 0 0 0 0 0)
i=8 #!taille de ton tableau

echo "Entrer un nombre : "
read nombre

while (($nombre!=0))
do
tab[i]=$(($nombre%2))
nombre=$(($nombre/2))
let i-- #!décrémente car sinon ça écrit le binaire dans l'ordre inverse
done

echo $nombre en binaire vaut ${tab[@]} #!on affiche tab</code>

Merci ! T'a pas une petite astuce pour enlever les espaces entre chaque 0 et 1 dans le résultat binaire?

Et j'affichais le résultat avec une boucle ,tu crois que c'est possible de la garder ?

il n'y a pas de quoi khey
oui il y a moyen si tu affiches tab via une boucle for mais il faudra que tu supprimes le retour à la ligne
tout est sur internet blé :oui:

Le 25 mai 2021 à 18:05:55 :

Le 25 mai 2021 à 18:03:32 Disboard a écrit :

Le 25 mai 2021 à 17:50:32 :
<code>#!/bin/bash

tab=(0 0 0 0 0 0 0 0)
i=8 #!taille de ton tableau

echo "Entrer un nombre : "
read nombre

while (($nombre!=0))
do
tab[i]=$(($nombre%2))
nombre=$(($nombre/2))
let i-- #!décrémente car sinon ça écrit le binaire dans l'ordre inverse
done

echo $nombre en binaire vaut ${tab[@]} #!on affiche tab</code>

Merci ! T'a pas une petite astuce pour enlever les espaces entre chaque 0 et 1 dans le résultat binaire?

Et j'affichais le résultat avec une boucle ,tu crois que c'est possible de la garder ?

il n'y a pas de quoi khey
oui il y a moyen si tu affiches tab via une boucle for mais il faudra que tu supprimes le retour à la ligne
tout est sur internet blé :oui:

Merci, les kheys toujours aussi solide :oui:

Le 25 mai 2021 à 18:13:42 Disboard a écrit :

Le 25 mai 2021 à 18:05:55 :

Le 25 mai 2021 à 18:03:32 Disboard a écrit :

Le 25 mai 2021 à 17:50:32 :
<code>#!/bin/bash

tab=(0 0 0 0 0 0 0 0)
i=8 #!taille de ton tableau

echo "Entrer un nombre : "
read nombre

while (($nombre!=0))
do
tab[i]=$(($nombre%2))
nombre=$(($nombre/2))
let i-- #!décrémente car sinon ça écrit le binaire dans l'ordre inverse
done

echo $nombre en binaire vaut ${tab[@]} #!on affiche tab</code>

Merci ! T'a pas une petite astuce pour enlever les espaces entre chaque 0 et 1 dans le résultat binaire?

Et j'affichais le résultat avec une boucle ,tu crois que c'est possible de la garder ?

il n'y a pas de quoi khey
oui il y a moyen si tu affiches tab via une boucle for mais il faudra que tu supprimes le retour à la ligne
tout est sur internet blé :oui:

Merci, les kheys toujours aussi solide :oui:

:oui:

Données du topic

Auteur
Disboard
Date de création
25 mai 2021 à 16:33:35
Nb. messages archivés
13
Nb. messages JVC
13
Voir le topic sur JVC

Afficher uniquement les messages de l'auteur du topic

En ligne sur JvArchive
JvArchive compagnon
Découvrez JvArchive compagnon, l'userscript combattant la censure abusive sur le 18-25 !