Devoir 1 - Calculator

Mentions générales

Date limite: 30 Mars, 23:55
Points: 1 point de la note finale
Rendre en retard: 0.5 points / jour (maximum 4 jours)
Lien: Devoir 1

Ce que vous avez à faire

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
  1. Faire un nouveau projet en NodeJS
  2. Créez un fichier package.json contenant votre nom en tant qu'auteur, n'importe quelle version et le nom du fichier principal (ex: main.js, homework.js, calculator.js …)
  3. Ecrire la calculatrice ayant le fichier principal celui écrit dans package.json

Operations

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

Aide

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

Erreurs

La calculatrice a deux erreurs possibles:

  1. La commande n'a pas été trouvée
  2. Le nombre de paramètres est incorrect

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

Bonus

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 bonus ne sera attribué que si tous les autres tests passent.

Règles

  1. Vous ne pouvez pas utiliser RegEx ou toute autre bibliothèque qui utiliserait des expressions régulières
  2. Le code source doit être indenté (-0.1p)
  3. Vous devez écrire un fichier nommé Readme et expliquer comment vous avez écrit le devoir (-0.1p)

Copiage

Le devoir est individuel. Toute tentative de copie entraînera 0p pour les devoirs. Système anti-copie automatisé sera utilisé.

Questions

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.

NE POSTEZ AUCUN CODE. Ceci est considéré comme copiage et vous aller recevoir 0p pour le devoir.

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.

alf/teme/tema1.txt · Last modified: 2023/03/16 18:24 by alexandra.negoita02
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0