# PBinfo #3412 – IIF – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Folosind doar directive #define, construiți o funcție CHECK, asemenea funcției IIF din SQL, care are 3 parametrii:


Primul parametru poate fi 0 sau 1.
Al doilea parametru poate fi de orice tip. Funcția va returna acest parametru dacă primul parametru este 1.
Al treilea parametru poate fi de orice tip. Funcția va returna acest parametru dacă primul parametru este 0.

Funcția va fi folosită astfel: (în acest caz funcția returnează “but this will”)

std::cout<<CHECK(0, "this will not be returned", "but this will");
Exemplu:
Apelare

CHECK(0, "this is ONE", 10)
Valoare returnată

10
Important
Soluţia propusă va conţine doar secvența de directive #define. ORICE APARȚIE A CUVÂNTULUI if SE VA DEPUNCTA. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei. Exemplu:

#define FOO(x) Bar ## x
#define Barfoo "FOOBAR"

## Cod sursă C++

```cpp
#define CHECK(a, b, c) CH_10(a)(b, c)
#define CH_10(condition) _CH_ ## condition
#define _CH_1(b, c) b
#define _CH_0(b, c) c
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3412)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3412/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3412/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
