I.S.I.L - Institut Supérieur des Ingénieurs Liégeois

Nous vous souhaitons la bienvenue et une bonne visite sur le forum de
I.S.I.L - Institut Supérieur des Ingénieurs Liégeois

Merci de vous connecter ou vous inscrire.
I.S.I.L - Institut Supérieur des Ingénieurs Liégeois

Forum d'entraide


    Exercice java 2

    Partagez
    avatar
    Andy_D
    Apprenti
    Apprenti

    Messages : 68
    Date d'inscription : 14/09/2010
    Age : 29

    Exercice java 2

    Message par Andy_D le Sam 9 Oct - 14:12

    Bonjour;
    Voici le code source de l'exercice 2 du cours de java donné par Mr. JP Conniasselle en B33 (Ing. Electronique).
    Tout comme le code source du premier, je le fourni a titre d'aide a ceux qui sont un peu perdu ainsi,le but n'est pas que vous recopiez bêtement ce code source, mais plutôt que vous le compreniez... J'espère d'ailleurs que vous aurez l'honnêteté intellectuelle de ne pas le recopier pour l'inséré simplement dans votre rapport avant de le rendre au prof...

    L'énoncé était le suivant :

    1) Ecrire une classe application qui effectue les opérations suivantes :
    • Répéter
      Lire n (vous devez gérer les exceptions)
      Tant que n n’est pas numérique ou qu’il n’est pas compris entre 1 et 10

    • Créer un vecteur vect de n éléments entiers.
    • Initialiser le vecteur vect avec des valeurs aléatoires entières comprises
      entre -99 et +99
    • Enregistrer dans un string « vStr1 » le contenu des éléments du vecteur vect en
      appelant la méthode statique Arrays.toString(vect).
    • Enregistrer dans la variable « moy » la valeur retournée par la méthode statique
      « moyImp» de la classe Lib avec vect comme paramètre.
    • Appeler la méthode statique «permute » de la classe Lib avec vect comme
      paramètre
    • Enregistrer dans un string « vStr2 » le contenu des éléments du vecteur vect en
      appelant la méthode statique Arrays.toString(vect).
    • Appeler la méthode statique «modif » de la classe Lib avec vect comme
      paramètre
    • Enregistrer dans un string « vStr3 » le contenu des éléments du vecteur vect en
      appelant la méthode statique Arrays.toString(vect).
    • Enregistrer dans un string « resultats » le contenu de vStr1 + un retour ligne +
      le contenu de moy + un retour ligne + le contenu de vStr2+ un retour ligne + le
      contenu de vStr3.
    • Appeler la méthode statique «showMessageDialog » de la classe JOptionPane
      avec resultat comme paramètre d’affichage.



    2) Ecrire les méthodes statiques de la classe Lib

    • Méthode statique « moyImp» : 1 paramètre
      Retourne la moyenne des valeurs impaires qui sont enregistrées dans le
      vecteur entier passé en paramètre.

    • Méthode statique « permute » : 1 paramètre
      Permute dans le vecteur entier passé en paramètre le maximum avec le
      minimum.

    • Méthode statique « modif » : 1 paramètre
      Remplace dans le vecteur entier passé en paramètre chaque élément du
      vecteur par la somme de tous les éléments (y compris lui-même) situés à
      sa droite.


    Comme vous l'aurez compris, il faudra créer deux classes.
    Voici la première :
    Code:

    package theorie2;

    import javax.swing.*;
    import java.util.*;
    import java.lang.*;

    public class Main {

        public static void main(String[] args) {

            int n=0;
            String str="";
            //Récupération de la valeur n
            do
            {
                str = JOptionPane.showInputDialog("Entre un nombre [1 -> 10] :");
                try {
                            n = Integer.parseInt(str);
                } catch (Exception e) {
                    n=0;
                    System.out.print("erreur lors du parsing : "+ e.getMessage());

                }
            } while (n<1 || n>10);

            // Création du vecteur "vect" de n éléments entiers
            int vect [] = new int [n];
            // Initialisation du vecteur
            for( int i=0; i<n; i++)
            {
                Random r = new Random();
                vect[i]=r.nextInt()%100; //nombre compris entre -99 et 99
            }

          
            String vStr1 =  Arrays.toString(vect); // Je mets dans un string, mon vecteur
          //Appel des méthodes de ma classe Lib.
            double moy = Lib.moyimp(vect); // Calcul de la moyenne des nbres impaires
            vect = Lib.Permute(vect);//Permutation des nbres MAX et min
            String vStr2 = Arrays.toString(vect);
            vect = Lib.modif(vect);// appel de la méthode modif qui pour tout élément du vecteur, les remplaces par la somme de lui meme et des éléments à sa droite
            String vStr3 = Arrays.toString(vect);

            String resultats= vStr1+"\n"+moy+"\n"+vStr2+"\n"+vStr3;
            JOptionPane.showMessageDialog(null, resultats); //Affichage des résultats.
        }

    }

    Et maintenant, la classe Lib qui contient les méthodes que j'ai appelé dans la précédente :
    Code:

    package theorie2;

    public class Lib {


        public static double moyimp(int[] v)
        {
            double moyenne=0;
            int cpt=0, tot=0;
            if(v.length>0)
            {
                for(int i=0; i<v.length; i++)
                {

                    if(Math.abs(v[i]%2)==1 && v[i]!=0) // un nombre est impaire s'il est différent de 0 et si son modulo 2 = +/-1
                    {
                        cpt++;
                        tot+=v[i];
                    }
                }
                if(cpt>0) // si je n'ai pas de valeurs impaires dans mon vecteurs, je ne peux pas diviser par zéro !
                    moyenne = tot/cpt;
            }
            return moyenne; //Je considère que s'il n'y a pas de valeurs impaires, je retourne 0
        }

        public static int[] Permute(int[] v)
        {
            int Max=0, numVmax=0, Min=0, numVmin=0;
            if(v.length>1)
            {
                if(v.length==2)
                {
                    int tmp=v[0];
                    v[0]=v[1]; v[1]=tmp;
                }
                else
                {
                    Max = Min = v[0];
                    for(int i=1; i<v.length;i++)// recherche max/min
                    {
                        //si plusieurs max ou min  sout les meme alors je garde le premier trouver (=> le strictement < ou >)
                        if(v[i]<Min)
                        {
                            Min = v[i];
                            numVmin=i;
                        }
                        if(v[i]>Max)
                        {
                            Max=v[i];
                            numVmax=i;
                        }
                    }
                    //Inversion Min/Max
                    v[numVmax]=Min;
                    v[numVmin]=Max;
                }
            }
            return v;
        }

        public static int[] modif(int[] v)
        {
            int tailleVecteur =v.length;
            if(tailleVecteur>1)
            {
              for(int i=0;i<tailleVecteur;i++)
              {
                  int somme=v[i];
                  if(i<tailleVecteur)
                  {
                      for(int j=i+1; j<tailleVecteur; j++)
                      {
                          somme+=v[j];
                      }
                  }
                  v[i]=somme;
              }
            }
            return v;
        }

    }

    Afin d'améliorer la lisibilité du code, je vous conseil d'installer notepad++ (ou un éditeur de code du même genre), de faire un copier coller de ce code dans notepad++ puis de l'enregistrer avec l'extension .java. Ainsi, l'éditeur "mettra les mots en couleur".

    Comme pour le précédent exercice, mon code est bien entendu soumis à discussions/modifications.

    Pour de plus amples renseignements n'hésitez pas à me contacter.

    Andy Dewez
    B33P
    2010-2011

      La date/heure actuelle est Jeu 22 Juin - 16:49