About a project of processing .. I need a help

Please i need a help in my project . i hope that you help me to have the correct code.

Nombres rationnels

Sur le modèle des nombres complexes, on se propose de réaliser une classe qui représente les nombres rationnels. Notre point de départ est :

class Rationnel { int p; // numérateur int q; // dénominateur }

Testez votre code pour chaque question et assurez-vous que tout fonctionne correctement avant de passer à la question suivante !

Question 1. Commencez par implanter une fonction pgcd() (hors classe) qui calcule le plus grand diviseur commun de deux nombres entiers. Utilisez l’algorithme d’Euclide. Nous allons utiliser cette fonction pour garder nos nombres rationnels en forme irréductible (le numérateur et le dénominateur n’ont pas de diviseur commun).

Ajoutez à votre classe le constructeur suivant :

// Crée un nombre rationnel à partir d’un numérateur et un dénominateur donnés en argument Rationnel(int p, int q) { // on s’assure que le dénominateur n’est pas nul assert q != 0 : “le dénominateur ne peut pas être nul”; // on s’assure que le nombre est stocké sous forme de fraction irréductible // par exemple 42/54 → 7/9 int d = pgcd(p, q); this.p = p / d; this.q = q / d; // pour avoir une représentation unique, on s’assure que le dénominateur est positif // par exemple 3/-5 → -3/5 et -2/-3 → 2/3 if (this.q < 0) { this.p = -this.p; this.q = -this.q; } }

Vous remarquerez l’utilisation de l’instruction assert . Si l’expression booléenne (dans ce cas q != 0 ) s’évalue à false , le programme s’arrête avec un message d’erreur :

AssertionError: le dénominateur ne peut pas être nul

Testez avec :

void setup() { Rationnel r = new Rationnel(42, 0); }

Les deux points et la chaîne de caractères après sont facultatifs. Vous pouvez utiliser l’instruction assert pour tester vos méthodes. Voici quelques exemples de tests pour notre constructeur :

void setup() { Rationnel r1 = new Rationnel(2, 4); assert r1.p == 1 && r1.q == 2; Rationnel r2 = new Rationnel(42, -54); assert r2.p == -7 : "Le numérateur doit être -7 et pas " + r2.p; assert r2.q == 9 : "Le dénominateur doit être 9 et pas " + r2.q; }

Question 2. Ajoutez quelques autres constructeurs à votre classe :

  • Un constructeur qui crée un nombre rationnel égal à un nombre entier donné en argument.
  • Un constructeur sans argument (constructeur par défaut) qui crée le nombre rationnel zéro (0/1).
  • Un constructeur qui crée un nombre rationnel qui est égal à un autre nombre rationnel donné en argument (constructeur par recopie).

Question 3. Ajoutez à votre classe une méthode toString() qui renvoie une représentation sous forme "p/q" . Pensez aux cas particuliers, par exemple "3" et pas "3/1" .

Question 4. Écrivez des accesseurs num() et den() qui renvoient le numérateur et le dénominateur d’un nombre rationnel.

Question 5. Écrivez un autre accesseur val() qui renvoie la valeur réelle d’un nombre rationnel. Par exemple, la valeur réelle de 1/4 est 0.25 .

Question 6. Écrivez une méthode egal() qui vérifie si deux nombres rationnels sont égaux. Notre constructeur a pris soin de représenter chaque nombre rationnel de façon unique, il suffit donc de vérifier si les deux numérateurs sont égaux et les deux dénominateurs sont égaux. Écrivez une autre méthode egal() qui vérifie si un nombre rationnel est égal à un nombre entier.

Question 7. Faites des méthodes inf() et sup() qui vérifient si un nombre rationnel est inférieur/supérieur à un autre nombre rationnel ou à un nombre entier.

Question 8. Écrivez une méthode plus() qui calcule la somme de deux nombres rationnels. Cette méthode doit créer un nouvel objet qui est la somme de l’objet qui l’appelle (argument implicite) et l’objet passé en argument (argument explicite). Inspirez-vous de la méthode plus() de la classe Complexe . Écrivez une autre méthode plus() qui calcule la somme d’un nombre rationnel et un nombre entier.

Question 9. Ajoutez des méthodes moins() , mult() et div() qui implantent soustraction, multiplication et division (par nombre rationnel et par nombre entier).

Question 10. Comme application de votre classe, approximez π en utilisant la formule de Leibniz :

π = 4 - 4/3 + 4/5 - 4/7 + 4/9 - …

Utilisez les quelques premiers termes et affichez l’approximation sous forme d’un nombre rationnel et d’un nombre réel. Voici les quelques premières approximations :

4 = 4 = 4.0
4 - 4/3 = 8/3 = 2.6666667
4 - 4/3 + 4/5 = 52/15 = 3.4666667
4 - 4/3 + 4/5 - 4/7 = 304/105 = 2.8952382
4 - 4/3 + 4/5 - 4/7 + 4/9 = 1052/315 = 3.3396826
...

You might need to tell a bit more. Otherwise whatever we recommend is likely to come across as generic or out of place.

1 Like

Hello there is the all details about the project. i swear that you can help me.

We can help you but we won’t do your homework for you.
You need to provide codes of what you have tried and pinpoint exactly what you don’t understand or can’t manage to do.

we don’t have this leçon. For this i don’t understand how can I make the code . We have just ‘nombres complexes’ . I don’t know what’s the principle to do it. Specially the questions 3 and 7 , et 10.

First question, they ask you to code a euclide algorithm. Have you tried that?

Just saw you updated your first post.

i don’t have a idea how can i resolve the questions , we don’t have this lecon for this i don’t know

Not yet . i don’t know how to began

You have a link to a wikipedia article that explains how Euclide Algorithm is working.

The skeleton of your code should be like this:

void setup() {
  println(pgcd(21, 15));
}

int pgcd(int a, int b) {
  // TO DO
}

You need o replace “TO DO” with some code as explained in the wikipedia article.

can you explain me , the 3 and 7 and 10 questions

i’ll try with this .

Start with question one, you haven’t even started to create the Class so no need to worry about adding some methods to it yet.

it’s ok for the first question. can you explain me the methode of 3 et 7 and 10

I don’t know what to tell you, the questions are quite self explanatory:

Q3: They ask you to create a function that take the numerator and denominator and return a String (text) that represent the rational number. So if your numerator is 3 and denominator is 4 then it should return “3/4”

Q7: You need to compare your rational number against other rational numbers and integers. For example let’s imagine your rational number is 3/4 then myRationalNumber.inf(1) would return true because 3/4 is indeed lower than 1

Q10: You simply need to print in the console to result of the Leibniz formula using your toString() and val() functions

i don’t know how to do these

the questions are clear but i don’t know to resolve. i spent three days in this activities but i don’t find how to do it.

Again, if you are not willing to give us the code that you have so far then we can’t help you.

If you are wondering about question 3 then it means that you have done Q1 and Q2, so you already have coded a rational number class. Can we see it?

can you show your code that you made?

A function like void draw() doesn’t return anything (empty = void).

You want to return a float value as a String. So replace void with String

To make the function return a value, use return command

Here is an example with int.

int add2Numbers(int a1, int a2) {
  return a1 + a2; 
}

nominator and denominator is from a fraction, upper number and lower number
see https://www.pinterest.de/pin/224335625164717286/visual-search/?x=10&y=10&w=329&h=250&cropSource=6

return a1 + "/" + a2;

1 Like

Bonjour,

The Processing website has references, examples and tutorials here:
https://processing.org/

Other resources:

:)