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
    Nouveau Candidat au Club
    Probleme avec les vecteurs sur un test de primalité
    Bonjour, mon professeur nous a donné la tâche de développer un programme calculant si un nombre est premier en utilisant des vecteur. Le problème est que je n'arrive pas a attribuer les résultats aux vecteur

    Voici le code.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #include <cstdlib>
    #include <ctime>
    #include <vector>
    using namespace std;
     
    int main(){
    int x, n;
    bool verif(1);
    vector<int> diviseur;
    cout << "Veuillez entrer un chiffre : ";
    cin >> x;
    n = ceil(sqrt(x));
    for (int i=2; i<=n; i++){
        diviseur[(i-2)] = (x%i);
        if ((x==1) || (diviseur[i-2]!=0)){
            verif = 0;
        }else{
            verif = 1;
        }
     
    }
    if (verif == 0){
        cout << x << " est premier";
    }else{
        cout << x << " n'est premier";
    }
    return 0;
    }

  2. #2
    Membre régulier
    Bonjour,

    La méthode pour ajouter un nombre à un vector est push_back.

    Exemple:

    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
     
    #include <iostream>
    #include <vector>
     
    int main()
    {
       std::vector<int> v;
     
       // ajout de 2 éléments de type int car mon vector est un vector d'entier
       v.push_back(3);
       v.push_back(5);
     
       // j'affiche son contenu
       for(auto i : v)
       {
          std::cout << i << std::endl;
       }
    }

  3. #3
    Expert éminent sénior
    Salut, et bienvenue sur le forum.

    Juste une petite question, au passage : si verif est de type bool, pourquoi définis tu ses valeurs dans tes tests comme étant 0 et 1 ne serait-il pas préférable de les définir comme true (vrai) ou false (faux)

    Et puis, j'ai un léger doute en ce qui concerne ta logique, car tu parcoures d'office toutes les valeurs comprises entre 1 et la racine carrée du nombre demandé, ce qui est tout à fait logique, vu que la racine carrée d'un nombre correspond au "point de pivot" : 3*7 = 7*3.

    Mais tu modifie la valeur de verif à chaque passage dans la boucle, si bien que tu risques à plus d'une reprise de trouver un diviseur possible qui sera oublié ... au passage suivant dans la boucle
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

###raw>template_hook.ano_emploi###