Exercice unix

Fermé
meryema92 Messages postés 30 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 11 août 2016 - 31 déc. 2012 à 02:55
 Utilisateur anonyme - 31 déc. 2012 à 19:46
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
31 déc. 2012 à 04:42
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 30 Date d'inscription jeudi 27 décembre 2012 Statut Membre Dernière intervention 11 août 2016 1
31 déc. 2012 à 14:58
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
31 déc. 2012 à 19:46
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