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:

java Main.java 3 2 pwr
# cela écrira sur l'écran
9

Pour executer la calculatrice dans la ligne de commande, assurez-vous d'être dans le fichier src/main/java, et apres executer la commande comme suivant:

# pour compiler le programme
javac org/example/*.java
 
# pour executer le programme
java org/example/Main.java # les arguments ici

Operations

Op Paramètres Description Exemple
aucun Imprime sur l'écran le logo et la liste des opérations disponibles java Main.java
help aucun Imprime sur l'écran le logo et la liste des opérations disponibles java Main.java help
+ une liste de nombres (minimum 2) Ajoute les numéros java Main.java 2 4 3 5 6 7 3 +
- une liste de nombres (minimum 2) Soustrait les nombres java Main.java 2 4 3 5 6 7 3 -
mul une liste de nombres (minimum 2) Multiplie les nombres java Main.java 2 4 3 5 6 7 3 mul
div une liste de nombres (minimum 2) Divise les nombres java Main.java 2 4 3 5 6 7 3 div
mod deux nombres Calcule le modulo de a / b java Main.java 500 45 mod
sq un nombre Calcule la racine carrée du nombre java Main.java 600 sq
abs un nombre Calcule la valeur absolue du nombre java Main.java -700 abs
pwr deux nombres Calcule a à la puissance b java Main.java 30 9 pwr
sort une liste de nombres (minimum 1) Trie les nombres en ordre croissant java Main.java 2 4 3 5 6 7 3 sort
rev une liste de nombres (minimum 1) Trie les nombres en ordre décroissant java Main.java 2 4 3 5 6 7 3 rev
uniq une liste de nombres (minimum 1) Imprime tous les numéros une seule fois java Main.java 2 4 3 5 6 7 3 uniq
max une liste de nombres (minimum 1) Trouve la plus grande valeur java Main.java 2 4 3 5 6 7 3 max
min une liste de nombres (minimum 1) Trouve la plus petite valeur java Main.java 2 4 3 5 6 7 3 min
cos un nombre Calcule le cosinus d'un angle avec une valeur donnee java Main.java 45 cos
sin un nombre Calcule le sinus d'un angle avec une valeur donnee java Main.java 120 sin

  1. Dans la classe Main.java ecrivez les commandes necessaires pour executer la calculatrice;
  2. Faites, pour chaque calcule, une classe séparée;

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>'.

Utilisez la classe Cow donnee dans le projet. Pour imprimer le logo, utilisez la methode say(String message), où message est le texte pour afficher.

Un exemple:

java Main.java
# 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

java Main.java list
# cela va imprimer (exactement)
ERROR: this command does not exist, use help to see available commands
 
java Main.java 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 + b1 * i with a2 + b2 * i
java Main.java a1 b1 a2 b2 complex +
 
#subtract a1 + b1 * i with a2 + b2 * i
java Main.java a1 b1 a2 b2 complex -
 
#multiply a1 + b1 * i with a2 + b2 * i
java Main.java 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_java.txt · Last modified: 2023/03/16 18:35 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