Funkcje C++

0

Witam, mam pewien problem i nie wiem dokładnie o co tutaj chodzi.

#include <cstdlib>
#include <iostream>

using namespace std;

bool marlena(int a, int b, int c)
{
     bool wynik=1;
     if((a+b+c)%5==0)
     wynik=0;
     return wynik;
}

int obliczenia(int c, int b, int a)
{
    int wynik=0;
    ++wynik=(a&5)^(b|4)^(c&++a);                                                
    return wynik;
}

int petla(int b, int a, int c)
{
    int wynik=0;
    for(int i=b;i<10;i++)
    ++wynik=(a&i)^(b|i)|(c&i);
    return wynik;
}

int main(int argc, char *argv[])
{
    int x,y,z;
    int rezultat=0;
    cout<<"Podaj x,y,z :"<<endl;
    cin>>x;
    cin>>y;
    cin>>z;
    if(marlena(petla(y,x,z),obliczenia(z,y,x),petla(x,y,z)+obliczenia(y,z,x)))
    rezultat=petla(z,y,x)+obliczenia(x,y,z);
    else
    rezultat=petla(y,z,x)*obliczenia(z,x,y);
    cout<<endl<<"Wynik :"<<rezultat<<endl;    
    system("PAUSE");
    return EXIT_SUCCESS;
}

Załóżmy, że x=5, y=0, z=7.
Jeżeli przy int obliczenia mamy c,b,a to za c podstawiamy x, czy z?
Drugie pytanie to:

if(marlena(petla(y,x,z),obliczenia(z,y,x),petla(x,y,z)+obliczenia(y,z,x)))

do czego to w ogóle nawiązuje i powtarza się pętla oraz obliczenia (jednak z inną kolejnością zmiennych)

0

przecinek w ifie. Dziwne. Nie wiem czy wiesz ale wartością takiego wyrażenia jest bodajże wyrażenie znajdujące się najbardziej z prawej ale tego nie jestem na 100% pewien.

0

@robcio: tu nie ma nigdzie przecinka w ifie, to jest tylko mało czytelny kod:

if ( marlena(
              petla(y,x,z),
              obliczenia(z,y,x),
              petla(x,y,z) + obliczenia(y,z,x)
            )
   )
0

A więc odpowie ktoś na moje pytanie?

0

Ad1. Po kolei zgodnie z tym jak wywołano.
Ad2. Bo tak zrobił autor kodu, inna kolejność zmiennych = inny wynik (no chyba że funkcja jest symetryczna).

0
_13th_Dragon napisał(a):

Ad1. Po kolei zgodnie z tym jak wywołano.
Ad2. Bo tak zrobił autor kodu, inna kolejność zmiennych = inny wynik (no chyba że funkcja jest symetryczna).

No to załóżmy, że X=2, Y=0, Z=6. Wychodzi na to, że X=A, Y=B, Z=C.
Czyli dostając taką funkcję

int obliczenia(int c, int b, int a)

Oraz takie wywołanie funkcji:

obliczenia(y,z,x)

Co powoduje? Według mnie to niepoprawne, gdyż powinno być w tym przypadku:

obliczenia(z,y,x)
1
obliczenia(        y,     z,     x)
int obliczenia(int c, int b, int a)
                  c=y    b=z    a=x

1 użytkowników online, w tym zalogowanych: 0, gości: 1