Vous êtes sur la page 1sur 5

INFO 13GE

Liste de problèmes types

1

Ajoutez à la classe C la méthode calculateGcd calculant et retournant le PGCD de deux nombres entiers (paramètres ou attributs). Le calcul se fait par recherche linéaire, mais les algorithmes d'Euclide sont aussi acceptés.

2 Möglichkeiten :

public class C { public int calculateGcd(int nbr1, int nbr2) { if(nbr1==nbr2) return nbr1; int
public class C {
public int calculateGcd(int nbr1, int nbr2) {
if(nbr1==nbr2) return nbr1;
int max = Math.max(nbr1,nbr2);
int min = Math.min(nbr1,nbr2);
int reste = max%min;
while (reste != 0) {
max=min;
min=reste;
reste=max%min;
}
return min;
}
}
public class C {
public int calculateGcd(int nbr1, int nbr2) {
if(nbr1==nbr2) return nbr1;
int max = Math.max(nbr1,nbr2);
int min = Math.min(nbr1,nbr2);
while (min != 0) {
if (max > min) {
max -= min;
} else {
min -= max;
}
}
return max;
}
}
max -= min; } else { min -= max; } } return max; } } Wenn

Wenn die Methoden der Klasse Math nicht benutzt werden dürfen muss man das Maximum und Minimum durch eine if-Schleife herausgeben.

Bsp.:

int max=nbr1; int min=nbr2; if(nbr2>nbr1) { max =nbr2;

min=nbr1;

}

Lacitignola Giuseppe

INFO 13GE

2

Ajoutez à la classe C la méthode isPrime qui indique si un nombre entier (paramètre ou attribut) est un nombre premier ou non.

public class C { public boolean isPrime(int nbr){ int diviseurs =0; for(int i =1;i<nbr+1;i++){ if(nbr%i ==0) diviseurs ++;

}

if(diviseurs==2) return true;

return false;

}

}

3

Génération d'une suite de nombres aléatoires entiers d'un intervalle donnée. Les nombres peuvent être affichés à l'écran, incorporés dans un calcul ou stockés dans une liste.

public class C { private ArrayList<Integer> list = new ArrayList<Integer>(); public void getRandomList(int pN, int pMin, int pMax){ for(int i=0; i<pN; i++){ int randomNumber = (int)(Math.random()*(pMax-pMin+1)+pMin); list.add(randomNumber);

}

}

}

!!

import java.util.ArrayList;

4

La classe C possède un attribut du type ArrayList<K>. Ajoutez à la classe C la méthode public int find(<?> pNeedle) qui recherche dans cette liste la position d'un élément dont un attribut donné a la valeur pNeedle. La méthode retourne la position de la première occurrence correspondant au critère de recherche. Si aucun élément n'est trouvé, la valeur -1 est retournée.

public class C { public ArrayList<Person> list = new ArrayList<Person>(); public int find(<?> pNeedle){ for(int i=0; i<list.size();i++){

 

if(pNeedle == list.get(i).get<?>() )

return i;

}

return -1;

}

}

!!

import java.util.ArrayList;

 

Wenn es sich bei <?> um String handelt muss man das Doppel -ist -gleich in der if-Schleife durch die

Methode .equals(

)

ersetzen.

Lacitignola Giuseppe

INFO 13GE

5

La classe C possède un attribut du type ArrayList<K>. Ajoutez à la classe C la méthode sort() qui trie cette liste à l'aide de l'algorithme de tri par sélection directe suivant la valeur d'un attribut donné (Integer, Double, String).

public class C{

private ArrayList<K> list = new ArrayList<K>(); public void sort (){ int minIndex; for (int i=0; i<list.size()-1; i++)

}

}

{

}

int j; minIndex = i; for (j=i+1; j<list.size(); j++){

if

(list.get(j).get<?>()<list.get(minIndex).get<?>()){ minIndex = j;

}

}

if (minIndex != i)

{

K temp = list.get(i);

list.set(i, list.get(minIndex)); list.set(minIndex, temp);

}

!!

.get<?>() ist eine Methode der Klasse K , diese gibt das Attribut der Klasse welches verglichen

werden soll raus. Wenn es sich bei <?> um String handelt muss man das kleiner -als -Zeichen in der if-Schleife durch die

Methode .compareTo (

import java.util.ArrayList;

)

ersetzen.

Lacitignola Giuseppe

INFO 13GE

6

Calculez le minimum, le maximum, la somme et/ou la moyenne d'attributs numériques d'objets contenus dans une liste.

public class C { private ArrayList<TYP> list = new ArrayList<TYP>(); public TYP getMin(){ TYP min = list.get(0); for(int i=0;i<list.size();i++){ if(list.get(i)<min) min=list.get(i);

 

}

return min;

}

public TYP getMax(){ TYP max = list.get(0); for(int i=0;i<list.size();i++){ if(list.get(i)>max) max=list.get(i);

}

return max;

}

public TYP getSum(){ TYP sum=0; for(int i=0;i<list.size();i++){ sum+=list.get(i);

}

return sum;

}

public double getAverage(){ TYP sum=0; for(int i=0;i<list.size();i++){ sum+=list.get(i);

}

return (double)sum/list.size();

}

}

!!

import java.util.ArrayList;

TYP steht für einen beliebigen numerischen Datentyp (Integer,Double,Float,Long,Short,Byte).

Lacitignola Giuseppe

INFO 13GE

7

Soit la classe Polynomial représentant un polynôme et contenant une liste dont l'élément à la position N représente le coefficient du terme XN. Implémentez la méthode evaluate permettant d'évaluer le polynôme pour une certaine valeur donnée. Le calcul se fait suivant la méthode dite « naïve », mais la méthode de « Horner » est aussi acceptée.

public class Polynomial{ private ArrayList<Double> coefficients = new ArrayList<Double>(); public double evaluate(double pX) { double p = 0; for(int i = coefficients.size()-1; i>=0 ; i--) { p = p * pX + coefficients.get(i);

}

return p;

}

}

!!

Diese Methode verfährt nach der « Horner »-Methode.

import java.util.ArrayList;

Lacitignola Giuseppe