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

  1. #1
    Membre à l'essai
    Trouver le le plus petit multiple de 6 d'un tableau
    Bonjour à tous,
    comme dit dans le titre, j'aimerais savoir comment on fait pour trouver le plus petit multiple de 6 d'un tableau, par exemple pour le tableau suivant : {1,2,6,24,18,30}; la fonction devra retourner 6. Je pensais y arriver facilement mais en faites il s'avère que c'est plus compliquer que cela...
    voici le code que j'ai fait jusque là :
    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
    int [] b = {1,2,6,24,18,30};
    			int [] m = new int [b.length];
    			int p = b[0];
     
     
     
    for(int i = 0;i<b.length;i++) {
    					if(b[i]%6 == 0) {
    						b[i] = m[i];
    					if(p > m[i]) {
    						p = m[i];
    						System.out.print(p);
    					}
    				}
    				}
     
    	}

  2. #2
    Membre averti
    Bonjour,

    Tu peux essayer ce bout de code.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public int getMultipleOfSix(int[] tab) {  
     
        Arrays.sort(tab);
        for(int i : tab) {
            if(i % 6 == 0) return i;
        }
     
        return 0 // ou ce que tu veux comme valeur si pas de multiple de 6 dans le tableau;
    }

  3. #3
    Membre à l'essai
    Salut merci de la réponse, alors oui ça fonctionne mais ils attendent quelque chose de plus scolaire, donc la fonction Arrays j'ai pas le droit de l'utiliser...

  4. #4
    Membre averti
    Dans ce cas faut que tu tries ton tableau avec ton propre algo :
    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
     
    	public int getMultipleOfSix(int[] tab) { 
     
    	    for(int i = 0; i < tab.length; i++) {
    		  if (i > 0) {
    			if (tab[i] < tab[i - 1]) {
    				int a = tab[i - 1];
    				tab[i - 1] = tab[i];
    				tab[i] = a;
    			}
    		  }
    	    }
     
    	    for(int i : tab) {
    	        if(i % 6 == 0) return i;
    	    }
     
    	    return 0; // ou ce que tu veux comme valeur si pas de multiple de 6 dans le tableau;
    	}


    Tu peux aussi mettre en place la dichotomie si t'as un gros tableau à trier !

  5. #5
    Membre à l'essai
    Ah oui effectivement ce n'est pas bête ! Mais les algorithmes de trie j'avoue qu'on n'a pas encore vu donc c'est difficile à appréhender.

  6. #6
    Membre averti
    Citation Envoyé par antares56 Voir le message
    Ah oui effectivement ce n'est pas bête ! Mais les algorithmes de trie j'avoue qu'on n'a pas encore vu donc c'est difficile à appréhender.
    Mais le tri que j'ai fourni ici n'est pas du tout fiable car ça ne trie pas correctement(peut-être que ça marche pour ton exemple mais c'est sûr que ça ne marchera pas si tu t'amuses à changer l'ordre des éléments du tableau). C'est juste pour que tu aies une idée de comment résoudre ton problème.

  7. #7
    Modérateur

    Non mais il y a pas besoin de trier, hein... Il faut trouver le plus petit. Il suffit de se rappeler à tout moment quel est le plus petit, et de regarder tous les éléments.

    Trier c'est du gâchis de travail.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre à l'essai
    Citation Envoyé par thelvin Voir le message
    Non mais il y a pas besoin de trier, hein... Il faut trouver le plus petit. Il suffit de se rappeler à tout moment quel est le plus petit, et de regarder tous les éléments.

    Trier c'est du gâchis de travail.
    Je fais ça dans mon code, mais ça me renvoi pas le plus petit nombre...

  9. #9
    Modérateur

    J'en doute. Pour commencer tu crées un autre tableau que celui qui t'est donné. J'ai pourtant jamais parlé de faire ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre régulier
    Citation Envoyé par thelvin Voir le message
    Il suffit de se rappeler à tout moment quel est le plus petit
    @thelvin à raison, et même pas besoin de copier le tableau.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Integer min = null;
        for (int i=0; i<numbers.length; i++) {
           if ( numbers[i]%6!=0 )
              continue;
           if ( min == null || numbers[i] < min ) 
              min = numbers[i];
        }
        // min est le plus petit OU null si aucun multiple de 6



    Par contre trier n'est pas toujours du gaspillage.

  11. #11
    Modérateur

    Citation Envoyé par gervais.b Voir le message
    Par contre trier n'est pas toujours du gaspillage.
    Pas toujours, non.

    Là, oui.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre à l'essai
    Ah d'accord ! Merci les gars c'est sympa des réponses.

###raw>template_hook.ano_emploi###