Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème procédure

Sujet résolu
    11 septembre 2022 à 16:13:50

    Bonjour j'ai un problème quand je veux éxecuter mes procédures

    j'ai le message d'erreur suivant

    main.cpp:49:18: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
       49 |     affiche(Tab[T]);
          |             ~~~~~^
          |                  |
          |                  int
    main.cpp:27:18: note:   initializing argument 1 of ‘void affiche(int*)’
       27 | void affiche(int Tab[]){
          |              ~~~~^~~~~



    je suis sûr que c'est un oubli bête de ma part mais je n'arrive pas à trouver la solution.

    voici mon code

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h> // pour générer nombre aléatoire
    #include <chrono> // pour avoir un timer
    
    
    #define T 7 //libre de changer la taille
    
    using namespace std::chrono;
    using namespace std;
    
    void tri_bulle(int Tab[]){
        for (int i=0 ; i < T-1; i++)
      {
        for (int j=0 ; j < T-i-1; j++)
        {
          /* Pour un ordre décroissant utiliser < */
          if (Tab[j] > Tab[j+1]) 
          {
            int tmp = Tab[j];
            Tab[j] = Tab[j+1];
            Tab[j+1] = tmp;
          }
        }
      }
    }
    void affiche(int Tab[]){
        for (int i=0;i<T;i++){
            cout<<Tab[i];
        }
    }
    
    int main()
    {
        srand (time(NULL)); 
        //permet d'avoir des nouveaux nombre aléatoire a chaque nouvelle éxécution du programme
        
        auto start = high_resolution_clock::now(); // démarre le timer
        
        int Tab[T];
        
        
        for (int i=0;i<T;i++){ // création du tableau
            Tab[i]=rand() % 100 + 1;
            //génere un nombre aléatoire compris entre 1 et 100 qui va être placé dans le tableau
            
        }
        
        affiche(Tab[T]);
        
        tri_bulle(Tab[T]);
        
        affiche(Tab[T]);
        
        auto stop = high_resolution_clock::now();  //arette le timer
        
        auto duration = duration_cast<microseconds>(stop - start); //calcul le temps d'éxécution
    
       cout << endl<< "Temps d'éxécution: "<< duration.count() << " microseconds" << endl;// affiche le temps d'éxécution
        
        return 0;
    }




    • Partager sur Facebook
    • Partager sur Twitter
      11 septembre 2022 à 17:13:10

      Tu envois le contenu de la case juste après la fin du tableau (donc en dehors du tableau) au lieu d'envoyer l'adresse du tableau :

          affiche(Tab);
      
          tri_bulle(Tab);
      
          affiche(Tab);
      Saches que l'on utilise plus trop ce type de tableau (tableau C) en C++, mais plutôt des std::array ou std::vector
      • Partager sur Facebook
      • Partager sur Twitter
      ...
        11 septembre 2022 à 18:24:42

        Bonjour, Merci d'indiquer un titre de sujet en rapport avec votre problématique.

        Mauvais titre

        Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

        Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

        De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

        Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

        Merci de modifier votre titre. Pour cela, éditez le premier message de votre sujet.

        (titre originel : Problème procédure)

        Liens conseillés

        • Partager sur Facebook
        • Partager sur Twitter
          20 septembre 2022 à 9:06:50

          Note : tu peux aussi profiter des fonctions de random plus flexibles que la relique rand du C.
          • Partager sur Facebook
          • Partager sur Twitter

          git is great because Linus did it, mercurial is better because he didn't.

            20 septembre 2022 à 17:19:04

            Je dirait même que tu refile un élément de tableau (soit un entier) à tes fonctions, alors qu'elles attendent un tableau (soit un pointeur).

            +1 rouloude, les pointeurs nu (ou pointeurs C-style) posent énormément de problèmes, préfère std::array ou std::vector.

            • Partager sur Facebook
            • Partager sur Twitter

            Problème procédure

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown