Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème sur mon exo

tableau de pointeurs sur réels

Sujet résolu
    4 décembre 2006 à 22:29:30

    Salut à tous ,

    Voici mon exercice :

    "Ecrire la fonction maximum :

    float *maximum ( float *p[] , int n )

    à laquelle est passée un tableau p , de n pointeurs de réels et qui retourne le pointeur vers le maximum de ces n réels . "

    Ensuite mon code C++ :


    #include <iostream>
    #include <conio.h>
     
    using namespace std ;

    float * maximum ( float *p[] , int n) ;   

    void main ()
    {

    float *adresse_max ; // pointeur qui "recevra" l'adresse du plus grand float renvoyée par la fonction maximum

    float *p[] = { 4.5 , 6.2 , 3.8 , 18.9 } ; //déclaration et initialisation de mon tableau de pointeurs sur
    adresse_max = maximum (p , 4) ;

    cout <<"l'adresse du plus grand float est : " << adresse_max << endl ;

    _getch() ;

    }


    float * maximum ( float *p[] , int n)
    {
            int i  ;
            float *ad_max , temp ; 

            for ( i = 0 ; i < 4 ; i++ )/* A la fin de cette boucle , temp aura la valeur du plus grand float contenu dans p */
            {
            temp = *p[i] ; // temp prend la valeur du float pointé par tab[i]
       
        if (*p[i] < *p[i+1] )   
                    temp = *p[i+1] ;         // temp prend la valeur de *p[i+1] si la condition est vraie
         }
            cout << "le plus grand float du tableau p est : "<< temp << endl ;

            ad_max = &temp ;
       
            return ad_max ;

    }


    Tout d'abord , je ne sais pas si mon programme marche car mon compilateur m'indique 4 erreurs à la même ligne (celle où je déclare *p[])
    error C2440: 'initializing' : cannot convert from 'double' to 'float *'

    Je ne sais pas trop ... Donc voilà mon problème !

    Merci d'avance .

    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2006 à 23:16:16

      float *maximum ( float p[] , int n )
      et
      float *p[] = { 4.5 , 6.2 , 3.8 , 18.9 }


      Pourquoi pas tout simplement :
      float *maximum ( float p[] , int n )
      float p[] = { 4.5 , 6.2 , 3.8 , 18.9 }

      ?
      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2006 à 23:22:07

        Oui mais c'est un tableau de pointeurs sur réels ! Dans ton cas , c'est un tableau de réels ...
        L'erreur qui m'est signalée ne m'indique pas ceci .
        "error C2440: 'initializing' : cannot convert from 'double' to 'float *' "

        Si j'en comprends le sens , elle me dit qu'elle ne peut convertir un double à un float * .
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2006 à 23:25:43

          Normal, ce que tu fais c'est un tableau (un pointeur), pas un double pointeur.

          C'est plus simple si ta fonction récupère un pointeur sur un tableau de réels plutôt que qu'un pointeur sur un tableau de pointeur de réels !
          • Partager sur Facebook
          • Partager sur Twitter
            4 décembre 2006 à 23:35:45

            en fait c'est vraiment bizar se que tu veux.

            Tu veux quoi au final ?? la plus grand valeur du tableau ??

            En tout cas, ta fonction maximum ne te retournera jamais le maximum de ton tableau.
            Il faut déja revoir ca !
            • Partager sur Facebook
            • Partager sur Twitter
              5 décembre 2006 à 20:17:38

              Ce n'est pas bizarre ce que je veux ! La fonction doit me retourner l'adresse du plus grand float .
              J'ai trouvé réponse à mon problème

              float i = 4.5 , j = 9.6 , k = 8.7 , l = 7.6 ;
              float *p[]={&i , &j , &k , &l} ;


              Lors de la déclaration et l'initialisation de mon tableau p , je mets l'adresse de floats ! Voici la solution .

              Merci à tous !
              • Partager sur Facebook
              • Partager sur Twitter

              Problème sur mon exo

              × 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