#include <iostream>     // cin és cout
#include <iomanip>      // setprecision
#include <cmath>        // round, floor, ceil, trunc

using namespace std;

int main ( )
{
    setlocale(LC_ALL,"hun");

    cout << "*****************************************************************" << endl;
    cout << "Egész és valós számok" << endl;
    cout << "*****************************************************************" << endl;

    int x = 5, y;       // egy egész szám kezdőértékkel és egy kezdőérték nélkül

    cout << "Kérek egy egész számot (y): ";
    cin >> y;

    float f, f2 = 12.659349123;
    double d=12.44444;

    cout << "Eredeti valós szám (f2): " << f2 << endl;
    cout << "A valós szám formázása: " << setprecision(8) << f2 << endl;
    //round, floor, ceil, trunc
    cout << f2 << " --> round: " << round(f2) << endl;
    cout << f2 << " --> floor: " << floor(f2) << endl;
    cout << f2 << " --> ceil: " << ceil(f2) << endl;
    cout << f2 << " --> trunc: " << trunc(f2) << endl;
    // konverzió a két számtípus között
    cout << "Konverzió a két számtípus között" << endl;
    float fy = (float) y;
    cout << "y valósként=" << fy << endl;

    int i2 = (int) f2;
    cout << "f2 egészként=" << i2 << endl;

    // karakterek
    cout << "*****************************************************************" << endl;
    cout << "Karakterek és kódjuk" << endl;
    cout << "*****************************************************************" << endl;
    char k='A', k2;
    k2 = 'B';

    cout << "'" << k << "' ascii-kódja: " << (int) k << endl;
    cout << "ascii-kód 65-nek megfelelő karakter: " << char(65) << endl;

    // logikai típus
    cout << "*****************************************************************" << endl;
    cout << "Logikai adattípus" << endl;
    cout << "*****************************************************************" << endl;

    bool igaz=true;
    bool hamis=false;
    bool es=(igaz && hamis);
    bool vagy=(igaz || hamis);
    string kiiras_es = (es == 0 ? "hamis":"igaz");              // feltételes értékadás
    string kiiras_vagy = (vagy == 0 ? "hamis":"igaz");
    cout << "igaz és hamis = " << kiiras_es << endl;            // logikai és (and) művelet: &&
    cout << "igaz vagy hamis = " << kiiras_vagy << endl;        // logikai vagy (or) művelet: ||

    return 0 ;
}
