Topic de Disboard :

Need expert en Shell bash

  • 1

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:

  • 1

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
En ligne sur JvArchive 286