• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

paradygmat funkcyjny - zadanie

0 głosów
506 wizyt
pytanie zadane 26 kwietnia 2018 w C i C++ przez kikosiak Obywatel (1,010 p.)

Cześć mam zadanie:

Wykorzystaj paradygmat programowania funkcyjnego i dodaj do przykładowego programu dwie operacje: jedną zwracającą iloczyn elementów o wartościach parzystych, a drugą o wartościach nieparzystych. W tym celu zmodyfikuj funkcję evaluate_operation(), tak aby przyjmowała ona dodatkowy parametr identity, który będzie elementem neutralnym wykonywanej operacji i będzie zwracany dla przypadku brzegowego rekursji.

Mam problem z wykonaniem tego zadania a w zasadzie nie wiem czemu mój kod nie działa czy mógłby mnie ktoś nakierować w jakim miejscu popełniam błąd.

int evaluate_operation (int identity, struct sll_node *node,
                         int (* operation ) (int result, struct sll_node * node ) )
{
    if (( NULL != node ) && ( NULL != operation ) )
    {

       if(operation ( evaluate_operation (identity,node ->next, operation ),node )==0)
       {

        identity=1;
       return operation (identity, node ) ;
       }
        else{
        return operation ( evaluate_operation (identity,node ->next, operation ),node ) ;
        }
    }

    return 0;
}

int multiplication_odd(int result,struct sll_node *node)
{
    if(node->data%2!=0)
   {


    result*=node->data;

        return result;
   }
        else return 0;
}

int main ()
{
    struct sll_node * front = NULL ;

    insert_node(&front,5);
    insert_node(&front,4);
    insert_node(&front,3);
    insert_node(&front,2);
    printf (" List elements printed with higher order function : ") ;
    perform_operation (front, print_node ) ;
    printf ("\n") ;

    printf("Product of odd elements of list: %d",evaluate_operation(1,front,multiplication_odd));


    remove_list (& front ) ;
    front = NULL ;
    return 0;
}

 

1
komentarz 28 kwietnia 2018 przez JanuszTypowo Nowicjusz (140 p.)
4 linijka

if (( NULL != node ) && ( NULL != operation ) )

nie chodziło ci przypadkiem o:

if (( node != NULL ) && (operation != NULL ) )

??
komentarz 28 kwietnia 2018 przez j23 Mędrzec (195,220 p.)

@Janusz, a to jakaś różnica jest? :P

 

komentarz 28 kwietnia 2018 przez JanuszTypowo Nowicjusz (140 p.)
Jest :D spróbuj zmienić i zobacz czy działa

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 9,745 wizyt
pytanie zadane 7 czerwca 2018 w JavaScript przez matoung Początkujący (430 p.)
+1 głos
1 odpowiedź 213 wizyt
+2 głosów
5 odpowiedzi 1,254 wizyt

93,775 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...