Pages : 1
#1 Le 13/06/2009, à 13:50
- baobab95
java
bonjour,
voila dans mon exam de java il y avait cette question, mais je n'ai pas compris la réponse !!
Class D {
public int x;
public D() { x = 3;}
public D (int a) {this(); x=x+a;}
public D (int a, int b){ this(b); x=x-a;}
Qu'afficheras le code suivant ?
D a = nex D(5,6);
System.out.println(a.x);
la réponse est 4..Pourquoi ?
**** --> http://julienze.free.fr <-- ****
Le futur site officiel des associations ! (enfin j'espère :p)
Ubuntu : le pingouin qui passe la pomme par la fenêtre !
Hors ligne
#2 Le 13/06/2009, à 14:11
- baobab95
Re : java
need
(désolé si je suis insistant mais je révise pour le rattrapge...)
**** --> http://julienze.free.fr <-- ****
Le futur site officiel des associations ! (enfin j'espère :p)
Ubuntu : le pingouin qui passe la pomme par la fenêtre !
Hors ligne
#3 Le 13/06/2009, à 14:25
- antywey001
Re : java
D a = new D(5,6);
On voit que le constructeur avec deux arguments fait d'abords appel au constructeur avec un argument ( donc ici, this(6)). la valeur de x vaudrat donc 9. Après, il enlève 5 de 9, donc ça affiche 4.
Bonne chance pour ton exam!
#4 Le 13/06/2009, à 14:27
- baobab95
Re : java
ok compris !
c'est sur les this() que j'étais incertain...Merci beaucoup
**** --> http://julienze.free.fr <-- ****
Le futur site officiel des associations ! (enfin j'espère :p)
Ubuntu : le pingouin qui passe la pomme par la fenêtre !
Hors ligne
#5 Le 13/06/2009, à 14:52
- baobab95
Re : java
je vais en profiter car j'ai encore des doutes au sujet d'une chose !
la compléxité !! (c'est ce qui me fais me planter à chaque fois !)
voila l'énoncé :
on considère la boucle suivante (n > 0) :
for (int i = 0 ; i < n; i+=1) for (int j = 1; j < n; j=2*j) f(i);
1) Le nombre d'apels de f est un O(n)
2) Le nombre d'apels de f est un O(n²)
3) Le nombre d'apels de f est un O(log(n))
4) Le nombre d'apels de f est un O(nlog(n))
au passage si quelqu'un à un bon cours sur la compléxité je prends car je suis vraiment nul !
pour moi la bonne réponse été la 2 (car il y a deux boucle imbriquée) mais apparament c'est la 4...
**** --> http://julienze.free.fr <-- ****
Le futur site officiel des associations ! (enfin j'espère :p)
Ubuntu : le pingouin qui passe la pomme par la fenêtre !
Hors ligne
#6 Le 17/06/2009, à 13:12
- geenux
Re : java
Tu as http://www.siteduzero.com/tutoriel-3-51 … mmeur.html qui pourrait t'aider.
Hors ligne
#7 Le 18/06/2009, à 17:06
- reeth
Re : java
pour moi la bonne réponse été la 2 (car il y a deux boucle imbriquée) mais apparament c'est la 4...
De même. Si quelqu'un a une explication à ce sujet...
Hors ligne
#8 Le 18/06/2009, à 17:14
- TatrefThekiller
Re : java
Tu fais n fois la boucle i et log(n) fois la boucle j (à cause du j *= 2).
Hors ligne
#9 Le 18/06/2009, à 17:20
- Khyl
Re : java
C'est effectivement la 4
for (int i = 0 ; i < n; i+=1) for (int j = 1; j < n; j=2*j) f(i);
La première boucle va de 1 à n en de 1 à 1 donc ça fait une complexité de n
la seconde boucle va de 1 à n mais avec un pas de 2 x j qui est le compteur de boucle. Du coup cette deuxième boucle a une complexité de log(n) puisqu'à chaque itération, on avance de 2 fois le pas d'itération
Du coup la complexité globale est O (n log(n))
EDIT : Grillé par TatrefThekiller il a dit en quelques mots ce que j'ai dis blablatant
Dernière modification par Khyl (Le 18/06/2009, à 17:21)
Hors ligne
Pages : 1