/**
 * Problema 1
 *
 * Folosim functiile srand(); si rand(); definite in <stdlib.h>.
 * Generatorul de numere aleatoare il initializam cu valoarea SEED.
 *
 */

# include <stdio.h>
# include <stdlib.h>

# define SEED 7

int main()
{
        int i;
        srand(SEED);            // Initializam generatorul de numere aleatoare
        for (i = 0; i < 5; i++)
                printf("%d %d %d\n", rand(), rand(), rand());
        return 0;
}

/**
 * Problema 2
 *
 * Rezolvarea se compune din citirea si apoi scrierea a trei
 * variabile de tip float.
 *
 */

# include <stdio.h>

int main()
{
        float a, b, c;
        
        scanf("%e%f%g", &a, &b, &c);
        printf("%e %f %g\n", a, b, c);
        
        return 0;
}

/**
 * Problema 3
 *
 */

# include <stdio.h>
# include <math.h>

int main()
{
        double x, PI = M_PI;

        printf("   x     sin(x)   cos(x)\n" );
        for(x = 0; x <= 2 * PI; x = x + PI / 20)
                printf( "%+2.3lf   %+2.3lf   %+2.3lf\n", x, sin(x), cos(x) );

        return 0;
}

/**
 * Problema 4
 *
 */

# include <stdio.h>

int main()
{
        float x, y;

        scanf("%f%f", &x, &y);

        if (x == 0 || y == 0)
                printf("Punct pe axe");
        else
                if (x > 0)
                        if (y > 0)
                                printf("Cadranul 1");
                        else
                                printf("Cadranul 4");
                else
                        if (y > 0)
                                printf("Cadranul 2");
                        else
                                printf("Cadranul 3");

        return 0;
}

/**
 * Problema 5
 *
 * Trei numere intregi pot forma laturile unui triunghi doar daca
 * suma a oricare doua dintre ele este cel putin egala cu al treilea
 */

#include <stdio.h>

int main()
{
        int a, b, c;

        scanf("%d%d%d", &a, &b, &c);

        if (a > b + c || b > a + c || c > a + b)
                printf("NU");
        else
                printf("DA");

        return 0;
}
/**
 * Problema 6
 *
 */

# include <stdio.h>

int main()
{
        int a, b, c; // laturile triunghiului
        int drept = 0, isoscel = 0, echilateral = 0; // 0 = fals, 1 = adevarat
        int asq, bsq, csq; // patratele laturilor

        scanf("%d%d%d", &a, &b, &c);

        //verificam daca laturile sunt corecte
        if (a > b + c || b > a + c || c > a + b)
                {
                return 0;
                }
        else 
        {
                // verificam daca triunghiul are un unghi drept
                asq = a * a;
                bsq = b * b;
                csq = c * c;
                if (asq + bsq == csq || asq + csq == bsq || bsq + csq == asq)
                        drept = 1;

                // verificam daca triunghiul este echilateral -> doar daca nu este dreptunghic
                if (drept != 1 && (a == b && b == c))
                        echilateral = 1;

                // verificam daca este isoscel -> doar daca nu este echilateral
                if (echilateral != 1 && (a == b || b == c || a == c))
                        isoscel = 1;

                // afisam rezultatul
                if (drept == 1)
                        printf ("dreptunghic"); // poate fi dreptunghic oarecare sau dreptunghic isoscel
                if (echilateral == 1)
                        printf ("echilateral\n"); // daca e echilateral nu mai poate fi altceva
                else
                        if (isoscel == 1)
                                printf (" isoscel.\n");
                        else
                                printf (" oarecare.\n"); // daca nu e isoscel nici echilateral nu e, deci e oarecare
        }

        return 0;
}
/**
 * Problema 7
 *
 */

# include <stdio.h>

int main()
{
        int a, b, c, d, min, max;

        scanf ("%d %d %d %d", &a, &b, &c, &d);

        // aflam mai intai maximul dintre a si b si le comparam pe restul cu max
        if (a>b)
                max = a;
        else
                max = b;
        if (c>max) max = c;
        if (d>max) max = d;

        // procedam la fel si pentru min
        if (a<b)
                min = a;
        else
                min = b;
        if (c<min) min = c;
        if (d<min) min = d;

        printf ("minimul este: %d\nmaximul este: %d\n", min, max);

        return 0;
}
/**
 * Problema 8
 *
 */

#include <stdio.h>

int main()
{
        int a, b, c, aux;

        scanf ("%d %d %d", &a, &b, &c);

        // sortam cele trei numere prin interchimbari
        // comparam, pe rand, a cu b, a cu c si b cu c
        if (a>b) {
                aux = a;
                a = b;
                b = aux;
        }
        if (a>c) {
                aux = a;
                a = c;
                c = aux;
        }
        if (b>c) {
                aux = b;
                b = c;
                c = aux;
        }

        printf ("Numerele sortate: %d, %d, %d\n", a, b, c);

        return 0;
}


/**
 * Problema 9+10
 *
 */

#include <stdio.h>

int main()
{
        int h, m, s; //ora, minutul, secunda

        //citim ora
                if ( scanf("%d", &h) != 1 ) {  // a aparut o eroare la citirea orei
                        printf("Ora a fost introdusa eronat.\n");
                        return 1; // cod de eroare (poate fi interpretat mai departe daca e nevoie)
                }

        //testez ora - s-a citit un intreg, dar este el corect?
        if (h < 0 || h > 23) {  //h = 0....23
                printf("Ora trebuie sa fie in intervalul 0..23\n");
                return 11; // cod de eroare (poate fi interpretat sau ignorat)
        }

        //citim minutul
        if ( scanf("%d", &m) != 1) {  // a aparut o eroare la citirea orei
                printf("Minutul a fost introdus eronat.\n");
                return 2; // cod de eroare (poate fi interpretat sau ignorat)
        }

        //testez minutul - s-a citit un intreg, dar este el corect?
        if (m < 0 || m > 59) {  //m = 0....59
                printf("Minutul trebuie sa fie in intervalul 0..59\n");
                return 22; //cod de eroare (poate fi interpretat sau ignorat)
        }

        //citim secunda
        if ( scanf("%d", &s) != 1) {  // a aparut o eroare la citirea orei
                printf("Secunda a fost introdusa eronat.\n");
                return 3;//cod de eroare - programul se opreste daca ajunge aici
        }

        //testez secunda - s-a citit un intreg, dar este el corect?
        if (s < 0 || s > 59) {  //m = 0....59
                printf("Secunda trebuie sa fie in intervalul 0..59\n");
                return 33; //cod de eroare (poate fi interpretat sau ignorat)
        }

        //toate datele au fost citite corect (sunt intregi si au valori corecte)
        printf("%02d:%02d:%02d\n", h, m, s);

        return 0;
}