Ne pas cliquer
Parrain-Linux
glisse sur son ventre
Écrire un nouveau message
Page : 1
Besoin d'aide sur un script shell "équation du second degré"
Avatar
Tektekpieuvr
utilisateur
Filleul
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
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é.
Remonter Descendre Permalien du message
Avatar
H2L29
modérateur
Parrain
Inscrit le : 11/03/2015
Messages : 383
Point(s) : 10434
Distribution : Debian
Localisation :
Brest, Finistère, France
Posté le 04/06/2021 à 01:40:41
Citer

j'approche de la solution mais je galère encore, je suppose que vous avez appris les conditions et variables? if then else case, les variables et p-ê aussi les fonctions? c'est le moment de les utiliser

Edit: j'ai réussi, c'est crade mais j'ai respecté le cahier des charges

Dernière édition le 04/06/2021 à 06:23:06
_________________
http://www.parrain-linux.com/promotion.php?image=PL-user.png&membre=H2L29
http://h2l29.pagesperso-orange.fr/images/GIF001.GIF
pas d'aide par MP utilisez le forum c'est fait pour ça http://www.parrain-linux.com/images/emoticones/kopete020.gif
Remonter Descendre Permalien du message
Avatar
Tektekpieuvr
utilisateur
Filleul
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
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é.
Remonter Descendre Permalien du message
Avatar
H2L29
modérateur
Parrain
Inscrit le : 11/03/2015
Messages : 383
Point(s) : 10434
Distribution : Debian
Localisation :
Brest, Finistère, France
Posté le 05/06/2021 à 01:04:51
Citer

hum ça me parait impossible de stopper le script si erreur sans un peu de condition

du coup je te partage mon script, à toi de voir si tu t'en sert ou pas ;)

spoiler alert
https://zerobin.lagout.org/?db9a650f4e085de0#yMeiMzBuGJiQNNkbtiNioIiT7qoVCEGculotCCvcGZ4=

Dernière édition le 05/06/2021 à 01:10:09
_________________
http://www.parrain-linux.com/promotion.php?image=PL-user.png&membre=H2L29
http://h2l29.pagesperso-orange.fr/images/GIF001.GIF
pas d'aide par MP utilisez le forum c'est fait pour ça http://www.parrain-linux.com/images/emoticones/kopete020.gif
Remonter Descendre Permalien du message
Avatar
Tektekpieuvr
utilisateur
Filleul
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
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é.
Remonter Descendre Permalien du message
Avatar
H2L29
modérateur
Parrain
Inscrit le : 11/03/2015
Messages : 383
Point(s) : 10434
Distribution : Debian
Localisation :
Brest, Finistère, France
Posté le 25/06/2021 à 19:40:20
Citer

salut Tektekpieuvr, alors ça a donné quoi cet exercice? c'était quoi la bonne façon de faire?

_________________
http://www.parrain-linux.com/promotion.php?image=PL-user.png&membre=H2L29
http://h2l29.pagesperso-orange.fr/images/GIF001.GIF
pas d'aide par MP utilisez le forum c'est fait pour ça http://www.parrain-linux.com/images/emoticones/kopete020.gif
Remonter Descendre Permalien du message
Écrire un nouveau message
Page : 1
Page générée en 0.0704 seconde(s).