/*
    1. Wygeneruj 6 liczb z zakresu do 1 do 49 bez powtórzeń.
    2. Problem wydawania reszty. Wydać dowolną resztę:
    a) przy nieograniczonej liczbie nominalow
    b) przy ograniczonej liczbie nominalow
    3. Znjadź minimum funkcji f(x)=x^3*ln(1-sin^2*sqrt(x)*y) dla
    xE<0,1> z dokładnością do 0.01
    yE<-pi,pi> z dokładnością do pi/10
*/

#include <iostream>
#include <time.h>

using namespace std;
void zad1()
{
    int tab[49];
    srand(time(NULL));
    for(int i=0; i<49; i++)
    {
        tab[i]=rand()%49+1;
        for(int j=0; j<i; j++)
        {
            if(tab[i]==tab[j])
            {
                tab[i]=rand()%49+1;
                j=-1;
            }
        }
    }
    for(int i=0; i<6; i++) cout<<tab[i]<<" ";
}

void zad2(char znak)
{
    int tab[9] = {1, 2, 5, 10, 20, 50, 100, 200, 500};
    int zaplata, doZaplaty, reszta=0, i;
    srand(time(NULL));
    doZaplaty=rand()%1000+50;
    cout<<"Do zaplaty masz: "<<doZaplaty<<" zl"<<endl;
    cout<<"Podaj ile chcesz zaplacic: ";
    cin>>zaplata;

    if(znak=='a')
    {
        i=8;
        cout<<"Otrzymujesz: ";
        do
        {
            reszta+=tab[i];
            if(reszta>(zaplata-doZaplaty))
            {
                reszta-=tab[i];
                i--;
            }
            else
            {
                cout<<tab[i];
                if(reszta!=zaplata-doZaplaty) cout<<" + ";
            }
        } while(reszta!=(zaplata-doZaplaty));
        cout<<" = "<<reszta<<endl;
    }

    else if(znak=='b')
    {
        int ile[9];
        cout<<"Sprzedawca posiada: ";
        for(int j=0; j<9; j++)
        {
            ile[j]=rand()%10;
            cout<<tab[j]<<"x"<<ile[j]<<" ";
        }
        i=8;
        cout<<"\nOtrzymujesz: ";
        do
        {
            if(ile[i]>0)
            {
                reszta+=tab[i];
                if(reszta>(zaplata-doZaplaty))
                {
                    reszta-=tab[i];
                    i--;
                }
                else
                {
                    ile[i]=ile[i]-1;
                    cout<<tab[i];
                    if(reszta!=zaplata-doZaplaty) cout<<" + ";
                }
            }
            else i--;
            if(ile[0]==0)
            {
                system("cls");
                cout<<"Brak reszty!"<<endl;
                break;
            }
            if(reszta==(zaplata-doZaplaty)) cout<<" = "<<reszta<<endl;
        } while(reszta!=(zaplata-doZaplaty));
    }
}
void zad3()
{


}
int main()
{
    //zad1();
    zad2('a');
    //zad3();
    return 0;
}