Operation en Java

Résolu/Fermé
lowpien Messages postés 41 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 janvier 2011 - 17 nov. 2008 à 19:37
lowpien Messages postés 41 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 janvier 2011 - 19 nov. 2008 à 21:33
Bonjour,

J'essaye d'ecrire un programme qui fait des opérations d’addition, de soustraction, de multiplication et de division sur deux fractions. Pour ce :


Exemple d'exécution


La fraction F1 est : 1/3
La fraction F2 est : 2/5
L’addition de F1 avec F2 est : 11/15
La soustraction de F2 de F1 est : 1/15
La multiplication de F1 par F2 est : 2/15
La division de F1 par F2 est : 5/6


j'ai debuter le programme, mais je n'ai qu'erreur sur erreur.
A voir également:

3 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
17 nov. 2008 à 20:55
Ah bon ?

Cordialement,

ps: plus sérieusement, si tu postais ton code et que tu nous détaillais un peu plus les "erreurs", en nous posant des questions, on pourrait peut-être t'aider
0
lowpien Messages postés 41 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 janvier 2011
17 nov. 2008 à 22:07
voila ce que j'ai ecrit, mais j'ai l'impression que mon depart n'est deja pas bon....



public class Fraction

private int Numerateur, N1,N2;
private int Denominateur,D1,D2;

private int Addition,Soustraction,Multiplication,Division;

private int Afficher_Fraction;

Public Fraction F1 (int Un_NumerateurN1, int Un_DenominateurD1){

this();

set NumerateurN1(Un_NumerateurN1);
set DenominateurD1(Un_DenominateurD1)}


public void set NumerateurN1(int NumerateurN1){

this.NumerateurN1 = NumerateurN1

public int get NumerateurN1(){

return NumerateurN1; }




public void set DenominateurD1(int DenominateurD1){

this.DenominateurD1 = DenominateurD1

public int get DenominateurD1(){

return DenominateurD1; }







Public Fraction F2 (int Un_NumerateurN2, int Un_DenominateurD2){

this();

set NumerateurN2(Un_NumerateurN2);
set DenominateurD2(Un_DenominateurD2)}


public void set NumerateurN2(int NumerateurN2){

this.NumerateurN2 = NumerateurN2

public int get NumerateurN2(){

return NumerateurN2; }




public void set DenominateurD2(int DenominateurD2){

this.DenominateurD2 = DenominateurD2

public int get DenominateurD2(){

return DenominateurD2; }
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329 > lowpien Messages postés 41 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 janvier 2011
17 nov. 2008 à 22:38
Hum...
Il ne faut pas coder deux fois la même chose.
Ce qu'il faut que tu comprennes, c'est qu'une classe c'est "un moule". C'est-à-dire qu'une fois que tu auras écrit ta classe Fraction, tu pourras créer autant de fractions que tu veux, juste en créant une nouvelle instance.
Une fraction est caractérisée par son numérateur et son dénominateur, comme tu l'as fait :
public class Fraction {
 private int numerateur;
 private int denominateur;

 public Fraction (int num, int den) {
  numerateur = num;
  denominateur = den;
 }

 public int getNumerateur() {
  return numerateur;
 }
 
 public int getDenominateur() {
  return denominateur;
 }
 //ne je mets pas les setters parce qu'on n'en aura pas besoin
}


Une fois que ta classe est faite, tu instancies de cette manière :
Fraction f1 = new Fraction(1, 3);
Fraction f2 = new Fraction(2, 5);

Bref, maintenant qu'on a notre moule, il faut écrire les méthodes qui conviennent. Donc dans notre classe Fraction, on va rajouter des méthodes (à ajouter dans le code ci-dessus donc) :
public Fraction ajouter(Fraction f) {
 /*Algorithme beta : on multiplie les dénominateurs pour que ça marche, 
 mais l'idéal est de trouver le ppcm : à toi d'implémenter la méthode ;)*/
 int num1 = numerateur * f.getDenominateur();
 int num2 = f.getNumerateur() * denominateur;
 int denominateur = this.denominateur * f.getDenominateur();
 return new Fraction(num1 + num2, denominateur);
}


Maintenant que je t'ai fait le plus dur (parce que la multiplication et la division, c'est bidon, et parce que la soustraction, c'est comme la somme), il te reste 2 choses à faire :
- la méthode pour trouver le ppcm (parce que c'est quand même carrément mieux d'avoir un bel algorithme
- une méthode pour simplifier les fractions (parce qu'avec ma méthode, on ne les simplifie jamais). Indice : la signature de la méthode est public void simplifie();. En gros il faut écrire une méthode qui trouve le plus petit dénominateur commun.

Cordialement,
0
lowpien Messages postés 41 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 janvier 2011
18 nov. 2008 à 11:37
Merci, pour ton aide,

mais encore comment pour que le programme me demande d'entrer le numerateur et le denominateur a l'ecran?

Je cherce aussi a ce que la fraction apparait sous cette forme : x/y alors il n'yaura pas vraiment de division.
0
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
18 nov. 2008 à 12:35
Bonjour,
Pour récupérer des valeurs entrées par l'utilisateur, tu dois communiquer avec l'entrée et la sortie standard (System.in et System.out).
Tu peux utiliser la classe Scanner de l'API : https://docs.oracle.com/javase/6/docs/api/index.html?java/util/Scanner.html
Il y a un exemple d'utilisation dans la doc.

En ce qui concerne la division, je parlais de division de fractions : (x1/y1) / (x2/y2).

Cordialement,
0
lowpien Messages postés 41 Date d'inscription mercredi 21 mai 2008 Statut Membre Dernière intervention 22 janvier 2011
19 nov. 2008 à 21:33
merci de votre aide, j'ai trouver enfin la solution a mon probleme.
0