IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Language]Problem avec struct. clas et appel de meth. de clas


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Par défaut [Language]Problem avec struct. clas et appel de meth. de clas
    Bonjour,
    je dois ecrire un programme qui calcule une multiplication avec le schema suivant inscrit dans une recursion.

    On recois 2 nombres (int) par ex 2589 et 4568
    et on doit ecrire une recursion qui suit le modele suivant:

    if n == 1
    return Erg = Erg + 258*456*100

    if n == 2
    Erg =( Erg + (258*8 + 456*9) * 10 )+ appel recur n == 1

    if n == 3
    Erg = (8 * 9) + appel recur n == 2+ appel recur n == 1

    Je crois avoir ecris quelque chose de pas trop mal dans ce sens mais jai du mal a finir car je n'arrive pas a expliquer a l'interpreteur que dans ma class multirekur j'ai deux methodes une main et une multi.

    Je suppose que je fais une confusion entre la syntaxe de la recursion
    et la syntaxe d'une methode ordinaire.

    Toujours est'il que je recois deux messages d'erreurs.

    1) class expected pour
    Erg = Erg + multi(int n, int c, int d, int e, int f, int Erg);

    2)
    et ')' expected
    Erg = Erg + multi(int n, int c, int d, int e, int f, int Erg);
    Je donne le code en suivant au cas ou jaurai fais d'autre betise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
    public class multirekur{
     
    	public static void main (String []args){
     
     
    	int a = 26473;			//Anfang Initialisierung
    	int b = 3428;
     
    	int c = a%10;
    	int d = b%10;
     
    	int e = (a-c)/10;
    	int f = (b-d)/10;		
     
    	int n = 3;					
    	int Erg = 0;			//Ende Initialisierung
     
     
    	System.out.println( " int a = "+a); 		//Print Initialisierung
    	System.out.println( " int b = "+b);
    	System.out.println( " int c = "+c);
    	System.out.println( " int d = "+d);
    	System.out.println( " int e = "+e);
    	System.out.println( " int f = "+f);
     
    	int Erg = Erg.multi(n, c, d, e, f, Erg);	//Appel recursion
     
    	System.out.println( " Das Ergebnis der Multiplikation ist " +Erg);
     
    } 		//Ende Main
     
    		//Rekursion
     
    	  public static int multi(int n, int c, int d, int e, int f, int Erg){
     
    		if (n == 1){
    			Erg = c * d * 100 + Erg;
    			return Erg ;	
    			}
     
    		if (n == 2){
    			n = n - 1;
    			Erg = ((e * d + c * f)* 10 + Erg); 		
    			Erg = Erg + multi(int n, int c, int d, int e, int f, int Erg);
    			}
     
    		else{
    			n = n - 1;
    			Erg = e * f;
    			Erg = Erg + multi(int n, int c, int d, int e, int f, int Erg);
    			}
     
     
    }		// Ende Rekursion
     
    }		//Ende class multirekur
    Si quelqun pouvait me dire ou est ma faute

    D'avance merci

    Marc_3

  2. #2
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    a vu de nez... je dirais que c'est ton appel qui n'est pas bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Erg = Erg.multi(n, c, d, e, f, Erg);   //Appel recursion
    ca c'est bon
    Mais dans ta méthode multi, tu fais aussi des appels de méthodes et ca c'est pas bon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erg = Erg + multi(int n, int c, int d, int e, int f, int Erg);
    il faut enlever les int devant tes valeurs car ici aussi c'est un appel à ta méthode multi

    enfin c'est juste une petite erreur de copier/coller

    voila

    [edit]oula mais y en a d'autres des erreurs! une simple question tu débutes en programmation ou tu débutes en java ?[/edit]

  3. #3
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Et il y a aussi d'autres petites erreurs de syntaxe mais dsl j'ai plus dutout le tps de les expliquer today :-(
    sinon voila le code corrigé ;-) il compilera au moins :-) g pas checké la logique donc... regarde si c bien ce que tu attends :-)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    public class multirekur {
     
        public static void main(String[] args) {
     
            int a = 26473; //Anfang Initialisierung
            int b = 3428;
     
            int c = a % 10;
            int d = b % 10;
     
            int e = (a - c) / 10;
            int f = (b - d) / 10;
     
            int n = 3;
     
            System.out.println(" int a = " + a); //Print Initialisierung
            System.out.println(" int b = " + b);
            System.out.println(" int c = " + c);
            System.out.println(" int d = " + d);
            System.out.println(" int e = " + e);
            System.out.println(" int f = " + f);
     
            int Erg = 0;
            Erg = multirekur.multi(n, c, d, e, f, Erg); //Appel recursion
     
            System.out.println(" Das Ergebnis der Multiplikation ist " + Erg);
     
        } //Ende Main
     
        //Rekursion
     
        public static int multi(int n, int c, int d, int e, int f, int Erg) {
     
            if (n == 1) {
                Erg = c * d * 100 + Erg;
                return Erg;
            }
     
            if (n == 2) {
                n = n - 1;
                Erg = ((e * d + c * f) * 10 + Erg);
                Erg = Erg + multi(n, c, d, e, f, Erg);
                return Erg;
            }
     
            else {
                n = n - 1;
                Erg = e * f;
                Erg = Erg + multi(n, c, d, e, f, Erg);
                return Erg;
            }
     
        } // Ende Rekursion
     
    } //Ende class multirekur

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 99
    Par défaut
    Salut,
    Effectivement ton appel n'est pas bon comme le dit anitshka.

    Ta fonction multi ne retourne pas toujours une valeur c'est normal ?

    Et puis je comprend pas bien le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [b]int Erg = 0;         //Ende Initialisierung [/b]
     
     
       System.out.println( " int a = "+a);       //Print Initialisierung 
       System.out.println( " int b = "+b); 
       System.out.println( " int c = "+c); 
       System.out.println( " int d = "+d); 
       System.out.println( " int e = "+e); 
       System.out.println( " int f = "+f); 
     
     [b]  int Erg = Erg.multi(n, c, d, e, f, Erg);[/b]
    Ca serait pas plutot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [b]int Erg = 0;         //Ende Initialisierung [/b]
     
     
       System.out.println( " int a = "+a);       //Print Initialisierung 
       System.out.println( " int b = "+b); 
       System.out.println( " int c = "+c); 
       System.out.println( " int d = "+d); 
       System.out.println( " int e = "+e); 
       System.out.println( " int f = "+f); 
     
     [b]  Erg = multi(n, c, d, e, f, Erg);[/b]
    Voili , voilou

    Ps = Corrige deja ces erreurs, compile et si ca ne fait pas ce que tu veux re-post ....

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 99
    Par défaut
    Oula, ca va vite sur ce forum Pas le temps de poster qu'il y a deja des reponses

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Par défaut Pas si vite les reponses
    Oui merci j'ai deja pas mal d'info et effectivement tout cela fait du sens car non seulement j'arrive a compiler mais en plus je decouvre d'autre betises a corriger. Ce qui est deja un gros progres.

    Ma recurssion n'est pas juste pour le moment mais j'arrive deja a faire quelque chose

    merci encore

    je ferai signe des que cela aura pris tournure

    Marc_3

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2003
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 491
    Par défaut Ca marche
    Cette fois j'ai pu corrige toutes les erreurs et mon programme fait bien la multiplication demandee.

    Tant d'effort pour une tache si anodine a priori.
    Je sais pas moi quand j'etait jeune on me demandait simplement de faire une multiplication. A la fin.

    Pour memoire si cela amuse quelqu'un le code corrige est


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    public class multirekur{
     
    	public static void main (String []args){
     
     
    	int a = 2222;			//Anfang Initialisierung
    	int b = 3111;
     
    	int c = a%10;
    	int d = b%10;
     
    	int e = (a-c)/10;
    	int f = (b-d)/10;		
     
    	int n = 3;					
    	int Erg = 0;			//Ende Initialisierung
     
     
    	System.out.println( " int a = "+a); 		//Print Initialisierung
    	System.out.println( " int b = "+b);
    	System.out.println( " int c = "+c);
    	System.out.println( " int d = "+d);
    	System.out.println( " int e = "+e);
    	System.out.println( " int f = "+f);
     
    	Erg = multi(n, c, d, e, f, Erg);
     
    	System.out.println( " Das Ergebnis der Multiplikation ist " +Erg);
     
    } 		//Ende Main
     
    		//Rekursion
     
    	  public static int multi(int n, int c, int d, int e, int f, int Erg){
     
    		if (n == 1){
    			Erg = e * f * 100 + Erg;
    			}
    		if (n == 2){
    			n = n - 1;
    			Erg = ((e * d + c * f)* 10 + Erg)+ multi( n, c, d, e, f, Erg); 		
    			}
    		else if (n == 3){
    			n = n - 1;
    			Erg = c * d+ multi( n,  c,  d,  e,  f, Erg);;
    			}
    			return Erg ;	
    }		// Ende Rekursion
    }		//Ende class multirekur


    Encore merci a tous

    Marc_3

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/01/2010, 16h27
  2. Réponses: 12
    Dernier message: 20/12/2006, 20h12
  3. [Language]problème lors de l'appel d'une méthode
    Par Samanta dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2005, 13h03
  4. Réponses: 8
    Dernier message: 13/08/2004, 12h32
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo