Upload files to "TEST2024"

This commit is contained in:
Luc Dartois 2024-06-20 08:40:11 +02:00
parent 4a053fbf93
commit c8439a8616
4 changed files with 225 additions and 0 deletions

68
TEST2024/Polynome.java Normal file
View File

@ -0,0 +1,68 @@
/**
* Classe modelisant un polynome à coefficients entiers
* Un polynome est caracterise par la suite de ses coefficients
* Ils sont stockes dans un tableau d'entiers, coefficient de poids faible en premier
* ex: 3x^2+5x+1 est represente par le tableau [1,5,3]
* Le premier coefficient ne peut pas etre nul
*/
public class Polynome{
//la liste des coefficients de notre polynome
int[] coefficients;
//le degre du polynome;
/**
*le constructeur
*@param t un tableau d'entiers
*@throws IllegalArgumentException si le premier coefficient de t est nul
*/
public Polynome(int[] t){
coefficients=new int[t.length];
for(int i=0;i<t.length;i++){
coefficients[i]=t[i];
}
}
//renvoie le degre du polynome
//le degré du polynome nul est -1
public int degre(){
return coefficients.length-1;
}
/**
*evalue le polynome sur un entier donne
*@param x l'entier
*@return int p(x)
*/
public int evaluer(int x){
int p=x;
int r=0;
for(int i=this.degre();i>=0;i--){
r+=coefficients[i]*p;
p*=x;
}
return r;
}
/**
*additionne deux polynome, renvoie le resultat dans un nouveau polynome
*@param p un polynome
*@return un polynome
*/
public Polynome add(Polynome p){
int d=this.degre()+1;
int[] c=new int[d];
for(int i=0;i<d;i++){
c[i]+=this.coefficients[i]+p.coefficients[i];
}
return new Polynome(c);
}
public String toString(){
if(this.degre()==-1) return 0+"";
String s=""+coefficients[0];
for(int i=1;i<=this.degre();i++){
s+=coefficients[i]+"x^"+i+"+";
}
return s;
}
}

40
TEST2024/README.md Normal file
View File

@ -0,0 +1,40 @@
# TP noté tests et debug.
## Fichiers mis à disposition
Pour ce TP noté sur les tests, vous disposez des fichiers suivants
+ README.md ce fichier, qui vous indique ce qu'il faut faire.
+ **Polynome.java** Une implémentation de polynomes d'entiers.
+ TestPolynome.java des tests fournis pour corriger Polynome.java
+ **TestPolynomeACompleter.java** un fichier squelette de tests à compléter.
Seuls les fichiers dont les noms sont **en gras** ci-dessus sont à compléter et à rendre.
Pour les modalités, voir ci-dessous.
## Première partie : debug ##
Un certains nombres de tests sont fournis. Vous ne devez pas changer ces derniers.
Vous devez exécuter ces tests puis changer le code de la classe **Polynome** idéalement jusqu'à ce que les tests fournis soient satisfaits.
Chaque ligne de **Polynome.java** changée devra être suivi du commentaire //BUGFIX éventuellement suivi de texte expliquant le changement
Par exemple :
> return (this.index); //BUGFIX enlevé +1 si si vous avez enlevé un +1.
BUGFIX me permet de voir où vous avez modifié le code.
Si vous ne suivez pas ces consignes vous n'aurez aucun point sur cette partie.
## Seconde partie : test ##
Vous devez compléter le fichier **TestPolynomeACompleter.java**
Il n'est pas demandé de changer le code de **Polynome.java** pour passer ces nouveaux tests.
## Modalité de rendu ##
Vous devez envoyer par mail à luc.dartois@u-pec.fr avec comme objet : [TP Test] Nom Prenom
Le mail devra contenir une archive VotreNom.tar.gz contenant uniquement les deux fichiers .java (on ne veut pas les .class) suivants, édités par vos soins comme indiqué dans les questions ci-dessus :
**Polynome.java**
**TestPolynomeACompleter.java**
Pour ceux qui ont oublié comment faire :
> bob@box:~$ tar czvvf VotreNom.tar.gz Polynome.java TestPolynomeACompleter.java

View File

@ -0,0 +1,67 @@
import static org.junit.Assert.assertTrue; // import static : une facilite offerte depuis java5 (pas besoin de mettre le prefixe)
import static org.junit.Assert.assertFalse; //
import static org.junit.Assert.assertEquals; //
import static org.junit.Assert.assertNull; //
import static org.junit.Assert.assertNotNull; //
import org.junit.Test;
import java.lang.StringBuilder;
import java.util.EmptyStackException;
public class TestPolynome{
@Test(expected=IllegalArgumentException.class)
public void LePlusGrandCoeffEstNonNul(){
Polynome p=new Polynome(new int[] {1,2,0});
}
@Test
public void EvaluerCorrect(){
Polynome p=new Polynome(new int[] {1,2,1});
assertEquals(0,p.evaluer(-1));
}
@Test
public void EvaluerEncore(){
Polynome p=new Polynome(new int[] {3,2,-1});
assertEquals(0,p.evaluer(3));
}
@Test
public void AffichageCorrect(){
Polynome p=new Polynome(new int[] {1,2,3});
assertEquals("3x^2+2x+1",p.toString());
}
@Test
public void AjoutPolynome(){
Polynome p=new Polynome(new int[] {1,2,3});
Polynome q=new Polynome(new int[] {9,-4});
Polynome s=p.add(q);
assertEquals(s.evaluer(0),10);
assertEquals(s.evaluer(1),11);
assertEquals(s.evaluer(3),31);
}
@Test
public void AjoutPolynomeEncore(){
Polynome p=new Polynome(new int[] {1,2,3});
Polynome q=new Polynome(new int[] {9,-4});
Polynome s=q.add(p);
assertEquals(s.evaluer(0),10);
assertEquals(s.evaluer(1),11);
assertEquals(s.evaluer(3),31);
}
@Test
public void SommeInverseCreePolynomeNul(){
Polynome p=new Polynome(new int[] {1,2,3,4,5,7});
Polynome pm=new Polynome(new int[] {-1,-2,-3,-4,-5,-7});
assertEquals(-1,p.add(pm).degre());
}
}

View File

@ -0,0 +1,50 @@
import static org.junit.Assert.assertTrue; // import static : une facilite offerte depuis java5 (pas besoin de mettre le prsfixe)
import static org.junit.Assert.assertFalse; //
import static org.junit.Assert.assertEquals; //
import static org.junit.Assert.assertNull; //
import static org.junit.Assert.assertNotNull; //
import org.junit.Test;
import java.lang.StringBuilder;
import java.util.EmptyStackException;
public class TestPolynomeACompleter{
@Test
public void OnCreeUnPolynome(){
}
@Test()
public void OnCreeUnPolynomeAPartirDeNull(){
}
@Test
public void DegreEstCorrect(){
}
@Test
public OnAfficheLePolynomeNul(){
}
//attention le polynome nul n'est pas null
@Test
public void DegrePolynomeNul(){
}
@Test
public void AddEstCommutatif(){
}
@Test
public void EvaluerLaSommeEstEgalASommerLesEvaluations(){
}
}