Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C++] Funkcje jako argumenty funkcji

jakonda 07 Sty 2011 21:45 3207 1
  • #1 07 Sty 2011 21:45
    jakonda
    Poziom 12  

    Witam.
    Mam mały problem z kodem. Otóż piszę w programie 4 funkcje które obliczają kolejno najmniejszy i największy element tablicy, jej sumę oraz średnią. Później próboję stworzyć funkcję do której chcę przesłać jako argumenty 4 wymienione przeze mnie funkcje i która wyświetli wartości obliczone za pomocą tychże funkcji. Jednak nie wiem co robię źle. Czy mógłby ktoś bardziej doświadczony spojrzeć na kod i powiedzieć, co robię nie tak ?? Z góry dziękuję.

    Code:

    #include <iostream>
    #include <string>

    using namespace std;

    int mini(int *t, int n);
    int maxi(int *t, int n);
    int suma(int *t, int n);
    int average(int *t, int n);
    void stat(int *t, int n, int (*fun1)(int), int (*fun2)(int),int (*fun3)(int), int(*fun4)(int));

    int main()
    {   
        srand(time(NULL));
       int n,i;
       cout<<"Podaj rozmiar tablicy ";
       cin>>n;
       int *p=new int[n];
       for(i=0; i<n; i++)
       {
       p[i]=rand()%10;
       cout<<"  "<<p[i];
        }

         stat(p,n,mini,maxi,suma,average);
        system("pause");
       return 0;
    }
    int mini(int *tab, int n)
    {
      int i,min=tab[0];
      for(i=0;i<n;i++)
        if(tab[i]<min)
          min=tab[i];
      return min;
    }
    int maxi(int *tab, int n)
    {
    int i,maks=tab[0];
      for(i=0;i<n;i++)
        if(tab[i]>maks)
          maks=tab[i];
      return maks;
    }
    int suma(int *tab, int n)
    {
       int sum=0;
       for(int i=0; i<n; i++)
       {
          sum=sum+tab[i];
       }
       return sum;
    }
    int average(int *tab, int n)
    {
       int sum=0,avg;
       for(int i=0; i<n; i++)
       {
          sum=sum+tab[i];
       }
       avg=sum/n;
       return avg;
    }
    void stat(int *t,int n, int (*fun1)(int), int (*fun2)(int),int (*fun3)(int),int (*fun4)(int))
    {   
         cout<<"Najmniejszy element to "<<fun1(t,n)<<endl;
         cout<<"Najwiekszy element to "<<fun2(t,n)<<endl;
         cout<<"Suma elementow wynosi "<<fun3(t,n)<<endl;
         cout<<"Srednia elementow wynosi "<<fun4(t,n)<<endl;
         }

    0 1
  • #2 08 Sty 2011 11:19
    directx11
    Poziom 17  

    Code:
    void stat(int *t, int n, int (*fun1)(int), int (*fun2)(int),int (*fun3)(int), int(*fun4)(int));
    
    int suma(int *tab, int n)


    Przyjrzyj się dokładnie deklaracji wskaźnika na funkcję i nagłówkowi samej funkcji, czy wszystko się zgadza?

    0