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 :

avis sur la résolution de plusieurs exercices


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut avis sur la résolution de plusieurs exercices
    Bonjours, je suis étudiants et j'ai eu un cours de java, j'ai raté l'examen de janvier et doit le repasser en septembre. J'ai essayé de résoudre 2 examens ( 5 questions au total) et je souhaiterai avoir un avis sur mes réponses.

    Merci

    Juin 2006

    Problème 1.

    Ecrivez une méthode, plusLongueSequenceCroissante, qui reçoit comme argument d’entrée un tableau à une dimension d’entiers v et qui renvoie en sortie un nombre entier contenant la longueur de la plus longue sous-séquence strictement croissante et dont tous les éléments sont strictement plus grands que la moyenne des valeurs du tableau v.
    Exemple :
    Soit le tableau v :
    4 6 5 20 31 40 5 6 9

    La moyenne est 14 et la méthode renverra 3, la longueur de la sous-séquence strictement croissante dont les valeurs sont >14 : 20, 31, 40.

    Signature de la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int plusLongueSequenceCroissante(int[] v)
    Exercice 1 :

    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
    public class ex1
    {
        public int plusLongueSeqenceCroissante(int[] v)
        {
            double m;
            int v;
            int c;
            int s;
     
            for ( int i=0; i< v.length ; i++)
            {
                v = v +i;
                c++;         
            }
            m + v/c
            for ( int i=0; i< v.length ; i++)
            {
                if ( i > m && i < i+1)
                {
                    s++;
                }
            }
            system.out.println ( "La longueur de la plus longue séquence croissante est :" + s)
        }
    }
    Problème 2.

    Ecrivez une méthode Java, moyenneVoisins, qui reçoit comme argument d’entrée un tableau carré (M1) à deux dimensions contenant des réels, et qui renvoie en sortie un nouveau tableau à deux dimensions M2 contenant les éléments de M1 qui ont été remplacés par la moyenne avec leurs voisins horizontaux et verticaux. Par exemple (attention, cet exemple n’a rien à voir avec l’autre exemple illustré ci-dessous), l’élément M2[2][3] = (M1[2][3] + M1[1][3] + M1[3][3] + M1[2][2] + M1[2][4])/5 et l’élément M2[0][3] = (M1[0][3] + M1[1][3] + M1[0][2] + M1[0][4])/4. Notez qu’un élément du tableau est considéré comme voisin de lui-même et intervient donc dans le calcul. En d’autres termes, à partir de chaque élément (i, j) de la matrice M1, nous calculons l’élément (i, j) correspondant de la matrice M2 (M2[i][j]) en prenant la moyenne des valeurs M1[i][j] des voisins immédiats de (i, j) situés sur la même ligne i et sur la même colonne j.

    Exemple :
    Soit le tableau M1:

    1 1 1 1
    2 2 2 2
    3 3 3 3
    4 4 4 4
    Le voisinage de l’élément (2, 2) est indiqué en gris; la moyenne est donc calculée sur ces 5 éléments et vaut 15/5. La méthode renverra M2 :

    4/3 5/4 5/4 4/3
    8/4 10/5 10/5 8/4
    12/4 15/5 15/5 12/4
    11/3 15/4 15/4 11/3
    Signature de la méthode : public double[][] moyenneVoisins(double[][] M1)

    Exercice 2 :

    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
    public class ex2
    {
        public static void main(String[ ] args)
        {
            double [ ] [ ] scores = new double [i][j];
     
            new double [i][j] = M1;
     
            M2[i][j]= average (M1[i][j] + M1[i-1][j] + M1[i+1][j] + M1[i][j+1]+M1[i][j+1])); 
        }
     
        public double[ ][ ] moyenneVoisin(double [ ][ ] M1)
        {
            for (double i = 0; i =< M2.length; i++)
            {
                for(double j = 0; j =< M2[0].length; j++)
                {
                System.out.println("M2[i][j]"); 
                }
            }
        } 
    }
    Janvier 2006

    Problème 1

    Ecrivez une méthode, minimaLocaux, qui reçoit comme argument d’entrée un tableau à une dimension d’entiers v et qui renvoie en sortie un nouveau tableau à une dimension contenant les indices (débutant à 0 pour le premier élément) de tous les « minima locaux » du tableau v. Un élément vi du tableau v sera considéré comme minimum local s’il est strictement plus petit que ses éléments voisins (voisin de gauche et de droite). En d’autres termes, le ième élément vi est un minimum local si vi–1 > vi < vi+1. Notez que le premier et le dernier élément du tableau ne seront jamais minimum local.

    Exemple

    Soit le tableau v :

    12 36 18 20 3 -1 5 6 1
    La méthode renverra le tableau d’indices {2,5}.

    Signature de la méthode : public int[] minimaLocaux(int[] v)

    Exercice 1 :

    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
    public class ex1
    {
     
        public int[] minimaLocaux (int[] v)
        {
            int[] s = new int [];           
     
            for (int i=0; i <= v.lenght; i++)
            {
                if ( i-1 > i && i < i+1)
                {
                    for (int i=0; i <= s.lenght; i++)
                    {
                        s=i;
                    }
                }
            }
            for (int i=0; i <= s.lenght; i++)
            {
               system.out.println ("les indices des minimas locaux sont:" s);
            }
        }
    }
    Problème 2

    Ecrivez une méthode Java, vectorToMatrix, qui reçoit comme argument d’entrée un tableau à une dimension d’entiers v = {l1, l2, l3, l4,…, ln–1, ln} et qui renvoie en sortie une matrice carrée Mat (tableau à deux dimensions), de nombre de lignes et de colonnes égal à la taille du tableau v et contenant les éléments de v répartis de la manière suivante :

    l1 l2 l3 l4 … ln
    l2 l2 l3 l4 … ln
    l3 l3 l3 l4 … ln
    l4 l4 l4 l4 … ln
    … … … … … ln
    ln ln ln ln ln ln
    Notez que la matrice est carrée et symmétrique et qu’il y a moyen de résoudre le problème à l’aide d’une double boucle. Nous déconseillons donc fortement l’utilisation de plus de deux boucles.

    Exemple :

    Soit le tableau v :

    12 7 4 23 1
    La méthode renverra en sortie la matrice suivante :

    12 7 4 23 1
    7 7 4 23 1
    4 4 4 23 1
    23 23 23 23 1
    1 1 1 1 1
    Signature de la méthode : public int[][] vectorToMatrix(int[] v)

    Exercice 2 :

    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
    public class ex2
    {
     
        public int[][] vectorToMatrix(int[] v)
        {
            int[] scores = new int[5] (12, 7, 4, 23, 1);
     
            int[] scores = new int [v.length];
     
            if(v.length != v[0].length; i++)
            {
                System.out.println("La matrice n'est pas carrée, un vecteur nul est envoyé");
            }
            else
            {
                for(int i=0 ; i<v.length; i++)
                {
                    for(int j = i; j < v[0].length; j ++)
                    {   
                        scores [i] += v[i][j];
                    }
                }
            }
            return(v);
        }
    }
    Problème 3

    Une société de marketing récolte des informations concernant des modèles de voiture : leur prix, leur poids, etc. Dans le logiciel utilisé, les objets de type Voiture sont mémorisés dans un tableau à deux dimensions (non carré) V, chaque ligne du tableau correspondant à un constructeur automobile (Volkswagen, Nissan, etc) et chaque élément de la ligne à un modèle du constructeur. Le prix d’une voiture peut s’obtenir à l’aide de la méthode accesseur getPrice qui renvoie un « double ». Attention, tous les éléments du tableau ne contiennent pas nécessairement un objet – il faudra tester si l’élément est vide ou non.

    Voici un exemple de tableau V contenant des objets de type Voiture :

    polo golf fox jetta passat
    micra almera primera
    corolla avensis celica
    twingo clio kangoo mégane espace
    Cette société de marketing est intéressée par une sélection des voitures très chères (prix élevé). Dès lors, nous vous demandons d’écrire une méthode, getMostExpensive, qui, à partir du tableau de voitures V, renvoie un ArrayList contenant tous les objets de type Voiture « très chère ». Une voiture sera considérée comme « très chère » si son prix excède de plus de deux écart-types le prix moyen des voitures enregistrées dans V (pi > 2s + m; voir ci-dessous pour la définition des variables). Rappelons ici la formule d’estimation de l’écart-type :
    n
    s = √ (( 1/(n-1) ∑[pi – m]²)
    i=1
    où m est la moyenne des prix, pi est le prix de la voiture i, et n est le nombre total de voitures.
    Pour plus de clarté, nous vous conseillons d’écrire, en plus de la méthode principale getMostExpensive, deux méthodes séparées qui calculent, respectivement, la moyenne et l’écart-type des prix sur base du tableau V, et d’utiliser ces méthodes dans la méthode principale. Vous pouvez considérer que ces méthodes sont définies« statiques ».

    Signature de la méthode principale : non communiquée.

    Exercice 3 :

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    import java.util.ArrayList;
     
    public class ex3
    {
    	public static double [] getMostExpensive ( double[][] v)
    	{
    	    ArrayList cher = new ArrayList();
    	    int p;
    	    string nom;
    	    double e = e.ecart-type;
    	    double m = m.moyenne;
     
    	    for (double i=0; i <= v.length; i++) && (double j=0; j <= v.length; j++))
    	    {
    	        if( ij == null )
    	        {
    	            ij++;
    	        }
    	        else
    	        {
    	            p = ij.getprice	;
    	            nom = ij;
    	        }
    	        if ( p > 2*s + m)
    	        {
    	            cher.add ( nom );
    	        }	            
    	    }
    	    system.out.println (cher);
    	}
    	public static double moyenne ( double[][] v)
    	{
    	    int c;
    	    int p;
    	    double m;
    	    for (double i=0; i <= v.length; i++) && (double j=0; j <= v.length; j++))
    	    {
    	        if( ij == null)
    	        {
    	            ij++;
    	        }
    	        else
    	        {
    	            c++;
    	            p = p+ij.getPrice;
    	        }	        
    	    }
    	    m=p/c;
        }
        public static double ecart-type ( double[][] v)
        {
            int n;
            int p;
    	    double s;
            double m = m.moyenne;
            double e;
            for (double i=0; i <= v.length; i++) && (double j=0; j <= v.length; j++))
    	    {
    	        if( ij == null )
    	        {
    	            ij++;
    	        }
    	        else
    	        {
    	            n = c.moyenne;
    	            p = ij.getPrice;
    	            s = s + ((p-m) * (p-m));
     
    	        }
    	    }
    	    e = Math.sqrt (1/(n-1) * s);
        }
    }

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Rien que pour l'exo 1 tu recevras un grand beau 0 pointé:

    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
     public class ex1
    {
        public int plusLongueSeqenceCroissante(int[] v)
        {
            double m;
            int v;  //déja ça commence mal, tu as un paramètre qui s'appelle v... donc confusion
            int c;
            int s;
            
            for ( int i=0; i< v.length ; i++)
            {
                v = v +i;  //première erreur due au fait pointé plus haut. De plus tu ne mets aucunement la valeur de 
                           //ton tableau quelquepart, tu ajoutes simplement les indices
                c++;         
            }
            m + v/c  //Tu es au courant que l'opérateur d'affectation est = et non +?
            for ( int i=0; i< v.length ; i++)
            {
                if ( i > m && i < i+1) //tu compare ta moyenne à l'indice dans le tableau et non la  valeur du tableau 
                                       //se trouvant à l'indice i (qui se récupère de la façon suivante: v[i]), de même 
                                       //pour la condition i<i+1 qui est tout le temps vraie (tu voulais peut être dire 
                                       //v[i]<v[i+1] )
                {
                    s++;
                }
            }
            system.out.println ( "La longueur de la plus longue séquence croissante est :" + s)  
            //Ou pas pour le moment comptes l'ensemble des valeurs qui sont supérieures à la moyenne et se trouvent 
            //dans une séquence, (d'ailleurs la première valeur de la séquence n'est jamais prise en compte)
        }
    }


    Bref rien qu'avec ça va faire un tour dans tes cours de java histoire ce comprendre comment fonctionnent les tableaux, puis réfléchis un peu plus sur tes algos....

    Donc question où étais tu ce semestre (à priori pas en cours ni en td/tp)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour le prolème 2 de juin 2006 c'est pa plus brillant que pour l'exo 1:

    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
    
    public class ex2
    {
        public static void main(String[ ] args)
        {
    
    //D'où sortent ton i et ton j?? TU serais magicien?
    //Des espaces en trop au niveau des crochets un tableau en 2D de doubles ça se déclare de la façon suivante: double[][] scores
             double [ ] [ ] scores = new double [i][j]; 
    
    //Cash pistache le compilos t'engueule si t'essaies de le faire, tu ne déclaire aucun objet, d'ou vient M1 par ailleurs, t'as encore voulu jouer à Garcimore?
     
            new double [i][j] = M1;
    
    //qu'est-ce qu'average??? D'où vient M2??? Tu te tournes vers david copperfield maintenant?
    
            M2[i][j]= average (M1[i][j] + M1[i-1][j] + M1[i+1][j] + M1[i][j+1]+M1[i][j+1])); 
        }
    
    //Toujours le même problème pour la déclaration de tableau de double
    //Vire moi ces espaces
    //Deuxio tu ne fais qu'afficher les valeurs de ta matrice, rien d'autre....
        public double[ ][ ] moyenneVoisin(double [ ][ ] M1)
        {
            for (double i = 0; i =< M2.length; i++)
            {
                for(double j = 0; j =< M2[0].length; j++)
                {
                System.out.println("M2[i][j]"); 
                }
            }
        } 
    }
    Bon grosso tu peux repartir taffer encore plus avant de présenter d'autres horreurs du même acabit....
    Tu pourrais au moins avoir la descence d'essayer de compiler ton code avant de venir le présenter dans le coin (si tu as pu poster sur le forum j'en déduis que tu as un ordi et que tu peux donc installer le nécessaire pour coder et compiler)

    Ensuite va t'enfourner un bon paquets de ligne de cours......Car tu en as grand besoin et reviens quand tu auras compris un tant soit peu les notions de programmation, programmation objet et ainsi de suite
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  4. #4
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Sinok, aurais-tu raté ta vocation d'enseignant(e) ?

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    On verra plus tard, je vient à peine de finir mes études, j'ai signé mon contrat depuis un mois, fallait sortir des études (pas franchement de sujet de thèse en tête).
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 122
    Points
    122
    Par défaut
    Nan mais c'est vrai, c'est abusé de poster du code comme ça sur un forum, et de s'attendre à ce qu'on te refasse ts tes exos.

    Comme dit sinok, COMPILE TON CODE sur ton ordi. C'est la moindre des choses

Discussions similaires

  1. Avis sur plusieurs sociétés ?
    Par alves.seb dans le forum SSII
    Réponses: 23
    Dernier message: 09/07/2012, 21h59
  2. Besoin d'avis sur un exercice en Java
    Par Breezy7 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 31/10/2011, 09h10
  3. Réponses: 6
    Dernier message: 05/07/2011, 22h02
  4. Résolution des systèmes linéaires
    Par FR119492 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 24/12/2010, 20h15

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