Besoin d'aide sur un script shell "équation du second degré" |
Inscrit le : 02/02/2021
Messages : 53
Point(s) : 325
OS souhaité : Fort dépendant de l'âge du matériel Localisation : Créteil, Val-de-Marne, France
|
Posté le 03/06/2021 à 21:19:09
|
if(isset($_SESSION['pseudo'])) { ?>Citer } ?>
|
|
Bonjour à tous,
toujours dans le cadre de ma formation en ligne qui se termine le 20 juin, je bloque sur cette mission, les scripts c'est vraiment nouveau pour moi.
Alice fait des études en mathématiques et pour ses exercices d'algèbre elle doit calculer des discriminants afin de résoudre des
équations du second degré. Comme elle a beaucoup d'équations à résoudre,
elle souhaite disposer d'un programme pour effectuer rapidement ce type
de calcul. Ça tombe bien car elle maîtrise justement le shell et le
Bash en particulier. Elle décide donc d'écrire un script spécifique pour
cette tâche.
Votre mission est de produire ce script dans un fichier de nom delta.sh. Ce script va prendre en paramètre trois valeurs que nous appellerons respectivement A, B et C. Ces valeurs représentent les coefficients de l'équation.
Le lancement du script s'effectue par la commande suivante : ./delta.sh A B C (avec A, B et C des nombres entiers).
Aussi, ce script va calculer et afficher sur la sortie standard le résultat de l'opération : B*B-(4*A*C).
De plus, pour éviter tout oubli de saisie, ce script vérifiera la présence de chacun des arguments. En cas d'absence d'un des arguments,
il doit afficher un message d'erreur et arrêter le traitement sans
réaliser le calcul. Le script s'arrête et le code retour est à faux (1).
Les différents messages d'erreur à générer en fonction des trois cas
possibles sont :
- ./delta.sh affichera le message : "Erreur : vous devez indiquer la valeur de A".
- ./delta.sh 4 affichera le message : "Erreur : vous devez indiquer la valeur de B".
- ./delta.sh 4 10 affichera le message : "Erreur : vous devez indiquer la valeur de C".
Indice 1
La syntaxe qui permet de contrôler et d'imposer l'existence d'un argument est : ${N; ?mess} avec N le numéro de l'argument (donc ici de 1 à 3) et mess le message d'erreur à afficher en cas d'absence de cet argument. Avec
cette écriture, lorsque le message d'erreur est affiché, le script est
arrêté avec un code retour différent de zéro.
Indice 2
Le calcul du delta est fait par une simple substitution arithmétique $((...)) comme argument d'une commande echo
J'ai fait ceci (sans espace entre : et ? sinon un smiley s'affiche) mais je ne sais pas comment m'y prendre pour affecter les valeurs A B et C.
#!/bin/bash
set $1 $2 $3
$1=${1: ?Erreur : vous devez indiquer la valeur de A}
$2=${2: ?Erreur : vous devez indiquer la valeur de B}
$3=${3: ?Erreur : vous devez indiquer la valeur de C}
echo $(($2*$2-(4*$1*$3)))
Merci d'avance pour l'aide que vous pourrez m'apporter.
|
_________________
Oté la Réunion ! pou sak i conné. |
|
|
|
|
|
|
Inscrit le : 02/02/2021
Messages : 53
Point(s) : 325
OS souhaité : Fort dépendant de l'âge du matériel Localisation : Créteil, Val-de-Marne, France
|
Posté le 04/06/2021 à 22:36:56
|
if(isset($_SESSION['pseudo'])) { ?>Citer } ?>
|
|
Salut,
cette mission est celle qui arrive juste avant d'aborder les conditions et variables, apparemment elle ne devrait pas être nécessaire pour l'exercice, sauf erreur de ma part.
Cordialement,
|
_________________
Oté la Réunion ! pou sak i conné. |
|
|
|
|
Posté le 05/06/2021 à 01:04:51
|
if(isset($_SESSION['pseudo'])) { ?>Citer } ?>
|
|
|
Dernière édition le 05/06/2021 à 01:10:09 _________________
pas d'aide par MP utilisez le forum c'est fait pour ça |
|
|
|
Inscrit le : 02/02/2021
Messages : 53
Point(s) : 325
OS souhaité : Fort dépendant de l'âge du matériel Localisation : Créteil, Val-de-Marne, France
|
Posté le 08/06/2021 à 00:02:01
|
if(isset($_SESSION['pseudo'])) { ?>Citer } ?>
|
|
Salut,
Je te remercie, je vais voir si c'est le bon chemin en grillant un code de vérification sur 3.
Je te tiendrai au courant.
Cordialement,
|
_________________
Oté la Réunion ! pou sak i conné. |
|
|
|
|
Posté le 25/06/2021 à 19:40:20
|
if(isset($_SESSION['pseudo'])) { ?>Citer } ?>
|
|
salut Tektekpieuvr, alors ça a donné quoi cet exercice? c'était quoi la bonne façon de faire?
|
_________________
pas d'aide par MP utilisez le forum c'est fait pour ça |
|
|
|