Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3513 connectés 

 


Dernière réponse
Sujet : Ordre séquentiel des paramètres et séparation par des nombres
_Faust_ Wow merci beaucoup. J'ai bien hâte que ca me soit aussi simple! Je comprend toujours la logique quand je le vois, mais pas quand je le fais. Ma faire quelques test avec printf, je ne savais même pas que ca existait en script shell.  
 
Entk merci encore!!
 
ps: vraiment désolé, j'était sûr de l'avoir mis dans la section programmation. Sûrement une erreur d'inattention. D'ailleurs tu y verra que j'ai déja posé beaucoup de questions dans cette section!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
_Faust_ Wow merci beaucoup. J'ai bien hâte que ca me soit aussi simple! Je comprend toujours la logique quand je le vois, mais pas quand je le fais. Ma faire quelques test avec printf, je ne savais même pas que ca existait en script shell.  
 
Entk merci encore!!
 
ps: vraiment désolé, j'était sûr de l'avoir mis dans la section programmation. Sûrement une erreur d'inattention. D'ailleurs tu y verra que j'ai déja posé beaucoup de questions dans cette section!
matafan Ouais bon je viens de comprendre :

#!/bin/bash
 
i=0
sum=0
 
echo -e "No de parametre\t\tValeur\t\tNombre de chiffres"
 
for int in $*
do
        (( i++ ))
        (( sum += int ))
        echo -e "${i}\t\t\t${int}\t\t${#int}"
done
 
echo -e "\nLa somme vaut ${sum}"
echo -e "La moyenne vaut $(( sum / i ))"


 
Quelques explications :

  • (( i++ )) et équivalent à i=$(( i + 1 ))
  • (( sum += int )) et équivalent à sum=$(( sum + int ))
  • ${#int} est le nombre de caractères de int
  • Remarque par rapport à ce que tu as écrit : on écrit $(( sum + int )) plutôt que $(( $sum + $int )). Dans le premier cas, sum et int sont interprétés en même temps que l'expression arithmétique, ce qui est correct. Dans le deuxième cas, num et int sont interprétés avant l'expression arithmétique, ce qui n'est pas correct (enfin ça marche en général, mais c'est moins correct). En particulier, si une des deux variables est vides, tu auras une erreur de syntaxe puisque l'expression arithmétique sera quelque chose du genre « $(( 3 + )) », qui ne veut rien dire.


PS : pour bien aligner le tableau il faudrait utiliser printf plutôt que des tabulations.
 
PS 2 : ça devrait aller dans Programmation, section Shell/Batch

matafan Toi t'as une drole de façon de calculer une moyenne :D Sinon le jeu c'est de comprendre ce que tu veux faire ? Commence par expliquer en français ce que tu cherches à faire.
_Faust_ Est-ce qu'il y a moyen de faire cela à partir de ce script que j'essai d'écrire?
 
 
"Le numéro de paramètre" c'est (1, 2, 3, 4..., -->le nombre de $nombre rentré) et le "nombres de chiffres" c'est (1= 1 chiffre, 128= 3 chiffres) où je suis pas dans la bonne voie? Ca fait déja un bon 10h que je cherche et je ne vois vraiment pas comment faire...
 
 
 

Code :
  1. #! /bin/bash
  2. sum=0
  3. echo -e "No de parametre\t\tValeur\t\tNombre de chiffres"
  4. for int in $*
  5. do
  6. sum=$(($sum+$int))
  7. moy=$(($sum/$#))
  8. echo -e "\t\t\t$int"
  9. done
  10. #echo "$#"
  11. echo -e "\nLa somme vaut $sum "
  12. echo -e "\nLa moyenne vaut $moy"


 
 
*Je suis a veille de changer mon nick pour "Le cas désespéré qui devrait changer de branche"


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)