From 03a8d1a9a4e7e062cf0417f56fe466fceef78505 Mon Sep 17 00:00:00 2001 From: pierre_antona Date: Fri, 24 Feb 2023 13:24:26 +0100 Subject: [PATCH] Fix errors --- src/animal.class.ts | 25 +++++++++++++++++++++++-- src/animal.interface.ts | 3 ++- src/array.ts | 29 ++++++++++++++++++++--------- src/calculator.ts | 35 ++++++++++++++++++----------------- src/hippopotamus.ts | 16 ++++++++++++++-- src/vehicle.ts | 33 ++++++++++++++++++++------------- 6 files changed, 97 insertions(+), 44 deletions(-) diff --git a/src/animal.class.ts b/src/animal.class.ts index 63da713..ebfbc56 100644 --- a/src/animal.class.ts +++ b/src/animal.class.ts @@ -1,3 +1,4 @@ +import IAnimal from './animal.interface'; import Food from './food/food'; // Créer une class Animal qui implémente l'interface IAnimal @@ -5,8 +6,28 @@ import Food from './food/food'; // par défaut, la méthode sleep réduit le poids de l'animal de 10 // le poids d'un animal ne peut pas être négatif -export default class Animal { +export default class Animal implements IAnimal { + weight: number = 0; + name: string; - // CODER ICI + constructor(name: string, weight: number) { + this.setWeight(weight); + this.name = name; + } + eat(arg: Food): string | void { + this.setWeight(10); + } + + sleep(): void { + this.setWeight(-10); + } + + setWeight(value: number): void { + if (this.weight + value >= 0) { + this.weight += value; + } else { + this.weight = 0; + } + } } diff --git a/src/animal.interface.ts b/src/animal.interface.ts index 32d5c62..73da23c 100644 --- a/src/animal.interface.ts +++ b/src/animal.interface.ts @@ -5,5 +5,6 @@ import Food from './food/food'; export default interface IAnimal { - // CODER ICI + eat(arg: Food): string | void; + sleep(): void; } diff --git a/src/array.ts b/src/array.ts index 74d328e..92e573b 100644 --- a/src/array.ts +++ b/src/array.ts @@ -1,25 +1,36 @@ export default class MyArray { - // Coder une méthode oddNumbers qui prend en paramètre un tableau d'entier, et renvoie un tableau uniquement composé // des entiers impairs de ce dernier - oddNumbers(arr: number[]) { - return undefined + oddNumbers(arr: number[]): number[] { + const oddArr: number[] = []; + arr.forEach((num) => { + if (num % 2 != 0) oddArr.push(num); + }); + return oddArr; } // Coder une méthode sort qui renvoie le tableau passé en paramètre trié par ordre croissant - sort(arr: number[]) { - return undefined + sort(arr: number[]): number[] { + return arr.sort((a, b) => a - b); } // Coder une méthode boringFunction qui renvoie true si les string du tableaux ont toutes la même longueur, // ou renvoie "relou ta fonction" sinon - boringFunction(arr: string[]) { - return undefined + boringFunction(arr: string[]): boolean | string { + let l: number = arr[0].length; + for (let i: number = 0; i < arr.length; i++) { + if (arr[i].length != l) return 'relou ta fonction'; + } + return true; } // Coder une méthode optionalArray qui renvoie true si les 2 arrays d'entiers passés en paramètres sont égaux, false sinon // Faire de même avec un 3e tableau passé en paramètre qui sera optionnel - optionalArray(a, b, c?) { - return undefined + optionalArray(a: number[], b: number[], c?: number[]): boolean { + if (c) { + return JSON.stringify(a) == JSON.stringify(b) && JSON.stringify(a) == JSON.stringify(c); + } else { + return JSON.stringify(a) == JSON.stringify(b); + } } } diff --git a/src/calculator.ts b/src/calculator.ts index 412d171..bcca06c 100644 --- a/src/calculator.ts +++ b/src/calculator.ts @@ -1,38 +1,39 @@ export default class MyCalculator { - // Coder une methode add qui prend 2 nombres en paramètre et renvoie la somme des deux - add(a, b) { - return undefined + add(a: number, b: number): number { + return a + b; } // Coder une methode subtract qui prend 2 nombres en paramètre et renvoie la différence des deux - subtract(a, b) { - return undefined + subtract(a: number, b: number): number { + return a - b; } // Coder une methode multiply qui prend 2 nombres en paramètre et renvoie le produit des deux - multiply(a, b) { - return undefined + multiply(a: number, b: number): number { + return a * b; } // Coder une methode divide qui prend 2 nombres en paramètre et renvoie le quotient des deux - divide(a, b) { - return undefined + divide(a: number, b: number): number { + return b != 0 ? a / b : 0; } // Coder une méthode power qui prend 2 nombres en paramètre et renvoie le premier élevé à la puissance de l'autre - power(a, b) { - return undefined + power(a: number, b: number): number { + return Math.pow(a, b); } // Coder une méthode squareRoot qui prend un nombre en paramètre et renvoie sa racine carrée - squareRoot(a) { - return undefined + squareRoot(a: number): number { + return a > 0 ? Math.sqrt(a) : 0; } // Coder une fonction fléchée qui renvoie true si le chiffre en paramètre est premier, false sinon - isPrime = (a) => { - return undefined - } - + isPrime = (a: number): boolean => { + for (let i = 2, s = Math.sqrt(a); i <= s; i++) { + if (a % i === 0) return false; + } + return a > 1; + }; } diff --git a/src/hippopotamus.ts b/src/hippopotamus.ts index 0c5a55b..838d52a 100644 --- a/src/hippopotamus.ts +++ b/src/hippopotamus.ts @@ -4,9 +4,21 @@ // l'hippopotame perd 20 de poids lorsqu'il dort // ajouter une méthode swim() qui ne renvoie rien mais baisse le poids de 50. +import Animal from './animal.class'; import Food from './food/food'; -export default class Hippopotamus { +export default class Hippopotamus extends Animal { + eat(arg: Food): string | void { + if (arg.isVegan()) { + this.setWeight(20); + } else return 'beurk'; + } - // CODER ICI + sleep(): void { + this.setWeight(-20); + } + + swim(): void { + this.setWeight(-50); + } } diff --git a/src/vehicle.ts b/src/vehicle.ts index 63e999d..2a49b86 100644 --- a/src/vehicle.ts +++ b/src/vehicle.ts @@ -1,12 +1,12 @@ import { VehicleType } from './vehicletype.enum'; export default class Vehicle { - type: VehicleType - name: string + type: VehicleType; + name: string; constructor(type: VehicleType, name: string) { - this.type = type - this.name = name + this.type = type; + this.name = name; } // Coder une méthode nois qui switchera sur le type du véhicule et renverra @@ -14,20 +14,27 @@ export default class Vehicle { // bep bep si le vehicule est une moto // brrrrrrrrrrrrr si le vehicule est un camion // skrrrt skrrrt dans tout autre cas - noise() { - return undefined + noise(): string { + switch (this.type) { + case VehicleType.Car: + return 'vrooooom'; + case VehicleType.Moto: + return 'bep bep'; + case VehicleType.Truck: + return 'brrrrrrrrrrrrr'; + default: + return 'skrrrt skrrrt'; + } } // Coder un callback qui renverra la methode noise précedemment codée // mais transformera la valeur de retour en majuscule - myCb = () => { - return undefined - } + myCb = (): string => { + return this.noise().toUpperCase(); + }; // Coder une méthode accelerate qui prend en paramètre un callback et renvoie la valeur de noise() concaténée au callback - accelerate(cb: () => string) { - return undefined + accelerate(cb: () => string): string { + return `${this.noise()}${cb()}`; } - - }