Partage
  • Partager sur Facebook
  • Partager sur Twitter

error: invalid operands to binary

error: invalid operands to binary + (have 'float *' and 'float')

    22 mars 2018 à 21:18:56

    bon

    jour je suis débutant en c et mon programme me mets c'est erreurs

    ||=== Build file: "no target" in "no project" (compiler: unknown) ===|
    ||In function 'fPaterner':|
    |132|error: invalid operands to binary + (have 'float *' and 'float')|
    |133|error: invalid operands to binary + (have 'float *' and 'float')|
    |154|error: invalid operands to binary + (have 'float *' and 'float')|
    |154|error: invalid operands to binary + (have 'float *' and 'float')|
    |156|error: invalid operands to binary + (have 'float *' and 'float')|
    |157|error: invalid operands to binary + (have 'float *' and 'float')|
    ||=== Build failed: 6 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
    
    #include <stdio.h>
    #include <stdlib.h>
    void fencodage(float*,int);
    void faffichage(float*,int);
    void fHeapSort(float*,int);
    void fPaterner(float*,int,float);
    
    
    int main()
    {
    
        float vec[100];
        float *pvec=&vec[0];
        int nbl,Menu,i;
    
        while(i!=1)
        {
            printf("====MENU==== \n 1. Choisir la taille de votre vec \n 2. Encoder votre vec \n 3. Afficher le vec \n 4. Heap Sort \n 5. Faire tout le programme \n 6. Quittez le programme \n");
            fflush(stdin);
            scanf("%d",&Menu);
    
            system("cls");
    
            switch(Menu)
            {
    
            case 1:
                printf("entrez la taille de votre vec : ");
                fflush(stdin);
                scanf("%d",&nbl);
                break;
    
            case 2 :
                fencodage(pvec, nbl);
                break;
    
            case 3 :
                faffichage(pvec, nbl);
                break;
    
            case 4 :
                fHeapSort(pvec, nbl);
                break;
    
            case 5 :
                printf("entrez la taille de votre vec : ");
                fflush(stdin);
                scanf("%d",&nbl);
                fencodage(pvec, nbl);
                faffichage(pvec, nbl);
                fHeapSort(pvec, nbl);
                break;
    
            case 6 :
                i=1;
                break;
            };
            system("cls");
        }
    
        return 0;
    }
    
    void fencodage(float *pvec,int nbl)
    {
        int i;
    
        printf("encodage Vec : \n");
    
        i=0;
    
        do
        {
            printf("entrez un nombre : ");
            fflush(stdin);
            scanf("%f",(pvec+i));
            i++;
        }while(i<nbl);
    }
    
    void faffichage(float *pvec,int nbl)
    {
        int i;
    
        printf("affichage Vec : \n  ");
    
        i=0;
    
        do
        {
            printf("%f   ", *(pvec+i));
            i++;
        }while(i<nbl);
    }
    
    void fHeapSort(float *pvec,int nbl)
    {
        int nbl2,idp,ipf;
        float temp,x;
    
    
        nbl2=nbl;
        idp=nbl/2-1;
        ipf=idp*2+1;
    
        x=idp;
    
        while(x>0)// creation de l'arbre
        {
            fPaterner(pvec,nbl,x);
            x--;
        }
    
        while(nbl2>0)
        {
            temp=*(pvec+nbl2);
            *(pvec+nbl2)=*pvec;
            *pvec=temp;
            nbl--;
    
            fPaterner(pvec,nbl,0);
        }
    }
    
    void fPaterner(float *pvec,int nbl,float x)
    {
        int PF,DF,idp;
        float F1,F2,temp,temp2;
    
        PF=x*2+1;
        DF=PF+1;
        F1=*(pvec+x*2+1);
        F2=*(pvec+x*2+1+1);
        idp=nbl/2-1;
    
        while(x<=idp)
        {
            if(DF<nbl)
            {
                if(F2>F1)
                {
                    temp=DF;
                }
                else
                {
                    temp=PF;
                }
            }
            else
            {
                temp=PF;
            }
    
             if(*(pvec+temp)>*(pvec+x))
             {
                 temp2=*(pvec+x);
                 x=*(pvec+temp);
                 temp=temp2;
             }
             x=temp;
        }
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2018 à 21:34:42

      Tu ne peux pas additionner un float à un pointeur, un pointeur contient une adresse qui ne peut être qu'un entier !

      PS : Ton premier message à disparu, ne t’inquiète pas, c'est fréquent sur ce forum !

      -
      Edité par rouloude 22 mars 2018 à 21:35:55

      • Partager sur Facebook
      • Partager sur Twitter
        22 mars 2018 à 21:40:10

        Oui j'ai remarqué donc j'ai recrée mon pos.

        Mais donc je dois changer quoi a mon code pour que ca fonctionne ? je suis perdu :/

        • Partager sur Facebook
        • Partager sur Twitter
          22 mars 2018 à 22:08:49

          Tu ne comprends pas ma phrase ? dans la fonction fPaterner ligne 132, 133, 154, 156, 157 comme l'indique tes erreurs de compilations

          Tu additionnes un float à un pointeur, ça n'est pas possible de faire cela, tu ne peux additionner que des entiers à un pointeur. Si tu ne comprends pas cela, c'est que tu as été trop vite dans ton apprentissage.

          • Partager sur Facebook
          • Partager sur Twitter
            22 mars 2018 à 22:28:24

            J'ai compris mon erreur en relisant plusieurs fois ce que tu me disais je me suis rendu compte, merci
            #include <stdio.h>
            #include <stdlib.h>
            void fencodage(float*,int);
            void faffichage(float*,int);
            void fHeapSort(float*,int);
            void fPaterner(float*,int,float);
            
            
            int main()
            {
            
                float vec[100];
                float *pvec=&vec[0];
                int nbl,Menu,i;
            
                while(i!=1)
                {
                    printf("====MENU==== \n 1. Choisir la taille de votre vec \n 2. Encoder votre vec \n 3. Afficher le vec \n 4. Heap Sort \n 5. Faire tout le programme \n 6. Quittez le programme \n");
                    fflush(stdin);
                    scanf("%d",&Menu);
            
                    system("cls");
            
                    switch(Menu)
                    {
            
                    case 1:
                        printf("entrez la taille de votre vec : ");
                        fflush(stdin);
                        scanf("%d",&nbl);
                        break;
            
                    case 2 :
                        fencodage(pvec, nbl);
            
                        break;
            
                    case 3 :
                        faffichage(pvec, nbl);
            
                        break;
            
                    case 4 :
                        fHeapSort(pvec, nbl);
                        faffichage(pvec, nbl);
            
                        break;
            
                    case 5 :
                        printf("entrez la taille de votre vec : ");
                        fflush(stdin);
                        scanf("%d",&nbl);
                        fencodage(pvec, nbl);
                        faffichage(pvec, nbl);
                        fHeapSort(pvec, nbl);
                        faffichage(pvec, nbl);
                        break;
            
                    case 6 :
                        i=1;
                        break;
                    };
            
                }
            
                return 0;
            }
            
            void fencodage(float *pvec,int nbl)
            {
                int i;
            
                printf("encodage Vec : \n");
            
                i=0;
            
                do
                {
                    printf("entrez un nombre : ");
                    fflush(stdin);
                    scanf("%f",(pvec+i));
                    i++;
                }while(i<nbl);
            }
            
            void faffichage(float *pvec,int nbl)
            {
                int i;
            
                printf("affichage Vec : \n  ");
            
                i=0;
            
                do
                {
                    printf("%f   ", *(pvec+i));
                    i++;
                }while(i<nbl);
            }
            
            void fHeapSort(float *pvec,int nbl)
            {
                int nbl2,idp,ipf;
                float temp,x;
            
            
                nbl2=nbl;
                idp=nbl/2-1;
                ipf=idp*2+1;
                temp=0;
            
                x=idp;
            
                while(x>0)// creation de l'arbre
                {
                    fPaterner(pvec,nbl,x);
                    x--;
                }
            
                while(nbl2>0)
                {
                    temp=*(pvec+nbl2);
                    *(pvec+nbl2)=*pvec;
                    *pvec=temp;
                    nbl2--;
            
                    fPaterner(pvec,nbl,0);
                }
               faffichage(pvec, nbl);
            }
            
            void fPaterner(float *pvec,int nbl,float x)
            {
                int PF,DF,idp;
                float F1,F2,temp,temp2;
            
                PF=x*2+1;
                DF=PF+1;
                F1=*pvec+(x*2+1);
                F2=*pvec+(x*2+1+1);
                idp=nbl/2-1;
                temp=0;
                temp2=0;
            
                while(x<=idp)
                {
            
                    if(DF<nbl)
                    {
                        if(F2>F1)
                        {
                            temp=DF;
                        }
                        else
                        {
                            temp=PF;
                        }
                    }
                    else
                    {
                        temp=PF;
                    }
            
                     if(*pvec+(temp)>*pvec+(x))
                     {
                         temp2=*pvec+(x);
                         x=*pvec+(temp);
                         temp=temp2;
                     }
                     x=temp;
                }
            }
            

            -
            Edité par LoicPinet1 22 mars 2018 à 22:28:43

            • Partager sur Facebook
            • Partager sur Twitter
              22 mars 2018 à 23:07:30

              Aussi, ligne 16 tu utilises la variable i sans l'initialiser. Même si les chances sont faible que i vaille 1, ça peut tout de même arriver.
              • Partager sur Facebook
              • Partager sur Twitter
                22 mars 2018 à 23:10:18

                ah oui juste par contre après avoir modifier tous ca j'ai un problème, quand je lance mon programme et que je sélectionne heap sort sa beug et me met ca
                • Partager sur Facebook
                • Partager sur Twitter

                error: invalid operands to binary

                × 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