Le but du devoir est d'écrire une calculatrice qui prend des paramètres de la ligne de commande. La calculatrice supportera les opérations suivantes: absolute, addition, division, help, maximum, minimum, modulo, multiply, power, reverse, sort, sqrt, subtraction, unique, sinus, cosinus.
Un exemple de calcul de 3 à la puissance 2 est:
node main.js 3 2 pwr # cela écrira sur l'écran 9
| Op | Paramètres | Description | Exemple | 
|---|---|---|---|
| aucun | Imprime sur l'écran le logo et la liste des opérations disponibles | node main.js | |
| help | aucun | Imprime sur l'écran le logo et la liste des opérations disponibles | node main.js help | 
| + | une liste de nombres (minimum 2) | Ajoute les numéros | node main.js 2 4 3 5 6 7 3 + | 
| - | une liste de nombres (minimum 2) | Soustrait les nombres | node main.js 2 4 3 5 6 7 3 - | 
| mul | une liste de nombres (minimum 2) | Multiplie les nombres | node main.js 2 4 3 5 6 7 3 mul | 
| div | une liste de nombres (minimum 2) | Divise les nombres | node main.js 2 4 3 5 6 7 3 div | 
| mod | deux nombres | Calcule le modulo de a / b | node main.js 500 45 mod | 
| sq | un nombre | Calcule la racine carrée du nombre | node main.js 600 sq | 
| abs | un nombre | Calcule la valeur absolue du nombre | node main.js -700 abs | 
| pwr | deux nombres | Calcule a à la puissance b | node main.js 30 9 pwr | 
| sort | une liste de nombres (minimum 1) | Trie les nombres en ordre croissant | node main.js 2 4 3 5 6 7 3 sort | 
| rev | une liste de nombres (minimum 1) | Trie les nombres en ordre décroissant | node main.js 2 4 3 5 6 7 3 rev | 
| uniq | une liste de nombres (minimum 1) | Imprime tous les numéros une seule fois | node main.js 2 4 3 5 6 7 3 uniq | 
| max | une liste de nombres (minimum 1) | Trouve la plus grande valeur | node main.js 2 4 3 5 6 7 3 max | 
| min | une liste de nombres (minimum 1) | Trouve la plus petite valeur | node main.js 2 4 3 5 6 7 3 min | 
| cos | un nombre | Calcule le cosinus d'un angle avec une valeur donnee | node main.js 45 cos | 
| sin | un nombre | Calcule le sinus d'un angle avec une valeur donnee | node main.js 120 sin | 
L'opération aide (cela signifie que vous exécutez votre programme avec le paramètre aide ou sans aucun paramètre) affiche la chaîne 'Calculator, Author: <votre nom ici, le même que celui de package.json>'.
Pour imprimer le logo, utilisez la bibliothèque cowsay .
Un exemple:
node main.js
# cela va imprimer:
 _________________________
< Calculator, Author: ALF >
 -------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
  help
  +
  -
  div
  mul
  mod
  sq
  abs
  pwr
  sort
  rev
  max
  min
  uniq
  cos
  sin
La calculatrice a deux erreurs possibles:
Si vous exécutez
node main.js list # cela va imprimer (exactement) ERROR: this command does not exist, use help to see available commands node main.js 10 mul # cela va imprimer (exactement) ERROR: mul command uses at least 2 parameters
Pour 0,25p points supplémentaires, implémentez la calculatrice pour des opérations avec des nombres complexes pour +, - et mul. Le format d'entrée sera:
#add a1+b1i with a2+b2i node main.js a1 b1 a2 b2 complex + #subtract a1+b1i with a2+b2i node main.js a1 b1 a2 b2 complex - #multiply a1+b1i with a2+b2i node main.js a1 b1 a2 b2 complex mul
Le devoir est individuel. Toute tentative de copie entraînera 0p pour les devoirs. Système anti-copie automatisé sera utilisé.
Si vous avez des questions concernant le devoir, posez-les en postant un issue sur le github repository avec le format [calculatrice] <le titre de votre question> . Vous aurez besoin d'un compte github pour cela.
Si vous souhaitez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github repository et cliquez Watch.