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 :
2) Ecrire les méthodes statiques de la classe Lib
Comme vous l'aurez compris, il faudra créer deux classes.
Voici la première :
Et maintenant, la classe Lib qui contient les méthodes que j'ai appelé dans la précédente :
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
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