Exercice unix

meryema92 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,
je veux résoudre un exercice qui demande qu'on écrive un script shell qui calcule la somme
S=1^p+2^p+3^p+....n^p
avec n et p deux entiers entrés en argument
voici le code que j'ai proposé


S=0
n=1
m=1
while [ $n -le $1 ]
do
p=1
while [ $p -le $2 ]
do
m='expr $m \* $n'
p='expr $p + 1'
done
n='expr $n + 1'
S='expr $S + $m'
done
echo $S

3 réponses

Utilisateur anonyme
 
salut,

et? ça fonctionne?

à mon avis, sans avoir essayé, ça ne devrait pas fonctionner :
si n et p sont des paramètres du script (c'est-à-dire respectivement $1 et $2), pourquoi les assigner à 1 dans le script? Leurs valeurs ne doivent pas être modifiées.
Par contre, il doit effectivement y avoir une incrémentation d'une variable supplémentaire (disons m), jusqu'à qu'elle soit égale à $n;

Il n'y a donc qu'une seule boucle qui incrémente $m, et calcule $S.
0
meryema92 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   1
 
en fait a l'aide de la première boucle on fixe un n et puis a l'aide de la deuxième boucle on calcule la puissance du n fixé en se servant de la variable m , a chaque fois qu'on sort de la boucle on incrémente le n jusqu'à ce qu'on atteint le $1
en fait quand j'exécute le programme il m'affiche une valeur très grande par rapport a ce que je dois avoir
le problème c'est que j'arrive pas a repérer l'erreur
0
Utilisateur anonyme
 
quel shell utilises-tu? ash? dash? bash? ksh (quelle version?)? un autre?

avec bash, au moins, il y a un opérateur arithmétique **, qui permet de faire ça en une seule boucle.
0