Partage
  • Partager sur Facebook
  • Partager sur Twitter

exercice java urgent :s

23 février 2009 à 20:23:26

salut tout le monde, je suis tres en retard vis à vis de ma classe à l'université en ce qui concerne le langage java et j'ai un exercice (un devoir noté même pour demain) et j'ai besoin d'aide, je ne vous demande pas de me faire l'exo mais de me donner les grandes lignes afin que je le puisse finir jusqu'à la fin!
ennoncé:
definisser une classe complexe pour les nombres de l'ensemble C. Un objet complexe aura deux attributs, une partie reelle et une partie imaginaire. definir un constructeur qui initialisera un nombre complexe à partir de deux parametres réels. Vous ecrirez la méthode toString qui donne une representation d'un nombre complexe sous la forme (r,i).
completer la classe Complexe avec les opérations d'addition et de multiplication. Noter que la multiplication est plus simple à écrire si les complexes sont ecrit sous forme polaire.

(je vous promet de réviser le java, mais là je suis tres pressée et je pourrais pas tout étudier ce soir. aidez moi svp!)
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:32:12

alors j'espere pas dire de betises

C = partie reelle + imaginaire

Donc une classe NbreComplexe avec un constructeur possedant deux parametres (double reel, double complexe)
tu inites dans le constructeur via r=reel et c=complexe

ensuite tu crees la methode toString() je pense kil n'ya pas de parametre car elle est override sur la methode dans Object
donc ca devrait etre : public String toString(){return "("+r+","+c+")";}

ensuite methode d'addition et multiplication si mes math ne sont pas trop mauvaises on fait les reels avec les reels et les complexe avec les complexes cependant je ne sais pas ce kon entend par "forme polaire"

a vue d'oeil je ferais methodeAdd(double reel, double complexe){r+=reel;c+=complexe}
methodeMult(double reel, double complexe){r*=reel; c*=complexe;}

Voila d'apres ton enoncé moi c ce ke je ferais (maintenant je pense ke c assez comprehensible pour ke tu le modifies si besoin est) et n'oublie pas ta classe main pour l'execution
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:34:03

Tu crées une classe Complexe.
Tu mets deux attributs d'instance partieRelle et partieImaginaire.
Tu crées un constructeur Complexe() par défaut qui met les deux attributs à 0.
Tu crées un constructeur par initialisation Complexe(int reel, int imaginaire) qui donne les valeurs des paramètres passés dans le constructeur aux attributs de ton objet.
Tu crées deux getters et deux setters qui vont avec.
Tu crées une méthode toString() qui return un String qui décrive l'objet.
Tu crées une classe addition(Complexe c) qui fasse des calculs entre deux nombres complexes (je te laisse le soin de revoir ce cours de maths s'il te manque).
Tu crées une classe multiplication(Complexe c) qui fasse des multiplications de deux nombres complexes. Gère le cas où au moins un des deux est nul. Puis passe les attributs de ton objet en coordonnées polaires (cf cours de maths de terminale).

Si t'as un soucis demande. Mais quand t'as un devoir comme ça, franchement évite de t'y prendre à la dernière minute surtout si tu connais pas les bases de Java ^^
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:36:30

:s ben à vrai dire le constructeur doit contenir deux parametres réels; pas un réel et l'autre complexe, mais j'ai compris comment ca devrait se faire (en gros: j'ai le moule et il suffit de le remplir, et je demanderai vos avis une fois le programme fait)
je bug sur un truc, je fais pas la difference avec classe et objet :s:s
vous pouvez m'expliquer svp!?
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:38:46

re elmh .
ouais je suis d'accord en fait avec le parametre des deux fctions... j'avais mis la partie reelle et la partie complexe mais mettre le nbreComplexe en parametre et recup via tes methodes get est une meilleure idée dans l'implementation et ca ne complique pas les choses
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:40:05

Ben ma réponse va susciter des réactions de la part de puristes, mais dis-toi dans un premier temps que classe et objet c'est pareil. Enfin j'veux dire la classe, c'est un peu une usine à objets. Tu codes une classe, et quand tu fais un new MaClasse(), ben tu crées un nouvel objet.
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:41:18

Salut,

tu as ICI une classe qui fait fait ce que tu veux...

Mais attention !!! Je trouve qu'il ne sert vraiment à rien de copier, d'autant plus que si tu es à un niveau universitaire, tu devrais être capable de comprendre cette classe, et donc de la réécrire par toi-même ensuite avec une structure identique. Mais avec une syntaxe qui t'est propre.

Cette classe n'est pas parfaite non plus, il manque par exemple une gestion des exceptions.

Bonne chance pour la suite !
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:42:52

les deux reelles me semble que c'est le coefficient de ta partie reelle et complexe exemple: 2.5(reelle) + 3.4i (complexe) dans notre cas les reelles seront 2.5 et 3.4

Un objet est une instance d'une classe. Je dirais que la classe de maniere basique represente les differents outils (methodes) que tu peux appliquer a ton objet.

public class Machin { code = outils = methodes}
Machin m = new Machin est l'objet sur lequelle tes methodes pourront etre appliquées
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 20:56:11

merci les gars, je fais un effort
vraiment merci
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:00:08

public class Complexe
{
private double r;
private double i;

public Comlexe(){
x=0;
y=0;
}


public Complexe(double r; double i)
{
x=r;
y=i;
}

//si je pige bien tu retournes sous forme de couple via une string
public string toString()
{
return "("+r+","+c+")";
}
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:02:46

Ouais enfin le toString c'est plus un truc du style :
return "Je suis un nombre complexe qui est : " + partieRelle + " + " + partieImaginaire + "i";


Et puis jaguar tu déclares nulle part x et y ^^
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:16:47

mdr j'ai copié chez elle :-p honte a moi !

private double r;
private double i;

devient
private double x;
private double y;

autant pour moi je dois faire plus attention a ce ke je lis

ouais mais pour le toString elmh regarde dans son enoncé, je c ke c pas un bon toString ce ke j'avais fé mais me semble ke c ce ke son prof veut
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:29:08

dites, quelqu'un pourrait m'aider pour la derniere partie de l'exo?? la multiplication en forme polaire "Noter que la multiplication est plus simple à écrire si les complexes sont ecrit sous forme polaire."
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:35:47

Evidemment on évite de multiplier deux nombres complexes sous la forme cartésienne en général.
Donc on passe ses coordonnées en polaire.
r = sqrt(x² + y²) par exemple, pour l'angle faut voir ses cours de maths c'est un petit plus astucieux
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:39:58

ah ok, je pige
alors (il me reste cette partie, je pars diner et je re) je peux avoir la correction de ceci??? svp, est ce que tout va bien jusque là?
public class Complexe {

private double i;
private double r;


public Complexe(){
i=0;
r=0; }

public Complexe(double reel, double imag) {
i = imag;
r = reel;
}
public String toString() {
return "("+r+","+i+")";

}




public Complexe addition( complexe z, complexe t)
{

double x,y;
x=z.r+t.r;
y=z.i+t.i;
return Complexe addition(x,y);
}
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:46:26

Alors comme t'es nouveau je t'invite à aller lire ceci quand même :)

http://www.siteduzero.com/forum-83-301 [...] ce-forum.html

Post Présentation du code par exemple.
T'es pressé mais c'est pas une raison pour faire n'importe quoi.

[EDIT]
Sinon ton code est bon... jusqu'à la méthode addition qui est fausse.
Tu peux créer une méthode dont la signature est la suivante : public static Complexe addition(Complexe c1, Complexe c2)
un peu comme tu as fait, mais alors dans la méthode tu déclares un nouvel objet Complexe au début qui contiendra le résultat de la somme des deux, que tu return à la fin. Là tu fais return Complexe (en gros c'est pas comme ça qu'on fait).

Je te propose quand même ce que j'ai dit plus haut car je pense que c'est plus adapté : public Complexe addition(Complexe c1)
Dans ma méthode en fait tu ajoutes un complexe à l'objet complexe courant... Mais ça doit être compliqué à comprendre si tu débutes ^^'

Et puis tes noms de variables sont pas du tout explicites on s'y perd très vite !! Si j'étais prof d'info je serais intransigeant là-dessus. Mais bon...
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:51:09

non pas ceci:
public Complexe addition( complexe z, complexe t)
{

double x,y;
x=z.r+t.r;
y=z.i+t.i;
return Complexe addition(x,y);
}

tu dois faire deux methode get (d'ou getter plus haut)
public double getReel(){return r;}
public double getIamg(){return i;}

ta methode devient:
public void add(complexe c)
//ici je met void je me dis ke c'est la methode toString ki te donnera la reponse qd tu le souhaiteras
//ensuite je mettrais qu'un parametre : l'addition se portera sur le complexe courant avec celui en parametre
{
i=this.getImag() + c.getImag();
r=this.getReel() + c.getReel();
}

Voila c kom ca ke je ferais
  • Partager sur Facebook
  • Partager sur Twitter
23 février 2009 à 21:52:34

Euh ce ne serait pas plutôt

public Complexe additionner (Complexe z, Complexe t) {
double x = t.x + z.x;
double y = t.y + z.y;
return new Complexe (x, y);
}

Et tu peux faire comme ceci aussi :
public static class OperationComplexes {
       public static Complexe additionner (Complexe z, Complexe t) {
            double x = t.x + z.x;
            double y = t.y + z.y;
            return new Complexe (x, y);
       }
       public static Complexe multiplication (Complexe z, Complexe t) {
            //Code.
       }
}


Ainsi bah dans ta classe principale tu n'aurai plus qu'à faire :

Complexe c1 = new Complexe (5, 2);
Complexe c2 = new Complexe (6, 9);
Complexe resultat = OperationComplexe.additionner (c1, c2);

Moi, personnellement, c'est comme ça que je code.
Mais, vous avez un devoir à faire et vous n'avez jamais vu de Java ?
Je ne comprendrai jamais les manières utilisées pas l'université.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
23 février 2009 à 22:01:23

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Bonjour,

Les demandes d'aides scolaires sont désormais interdites sur les forums du SDZ. En effet, il existe des forums spécialisés qui seront ravis de répondre à vos questions ; de plus, vous pouvez toujours demander de l'aide à vos professeurs ou à vos proches. ;)

Merci de votre compréhension.
  • Partager sur Facebook
  • Partager sur Twitter