#include <stdio.h>
#define TRUE 1
#define FALSE 0
typedef struct tagPARA { /* Bu yapı para ya ait bilgileri tutar */
int m_birLira; /* Adet olarak tutar */
int m_elliKurus;
int m_onKurus;
int m_besKurus;
double m_toplamPara; /* Para değerini tutar */
} PARA;
void ParaYatir(PARA *kasa, double para);
void ToplamParaGuncelle(PARA *kasa);
int ParaCek(PARA *kasadan, double deger, PARA *disariya); /* kasadan deger kadar para cekip disariya yatırır */
PARA g_kasa; /* Kasadaki para */
int main ()
{
ParaYatir(&g_kasa, 550.65); /* kasaya 550 lira 65 kuruş yükle */
PARA paraUstu; /* Kasadan çekilecek para bilgisini tutuyor*/
paraUstu.m_birLira = 0;
paraUstu.m_besKurus = 0;
paraUstu.m_elliKurus = 0;
paraUstu.m_onKurus = 0;
paraUstu.m_toplamPara = 0;
if (ParaCek(&g_kasa, 50.65, ¶Ustu) == FALSE) /* Ksadan 50 lira 65 kurus çekip para ustine yatırıyor */
{
/*Para cekilemedi*/
}
printf("para : %f\n", g_kasa.m_toplamPara);
return 0;
}
void ParaYatir(PARA *kasa, double para)
{
kasa->m_birLira += para / 1;
double temp = para * 10 - kasa->m_birLira * 10;
kasa->m_elliKurus = temp / 5;
temp = temp * 10 - kasa->m_elliKurus * 50;
kasa->m_onKurus = temp / 10;
temp = temp - kasa->m_onKurus * 10;
kasa->m_besKurus = temp >= 5.0 ? 1 : 0;
ToplamParaGuncelle(kasa);
}
void ToplamParaGuncelle(PARA *kasa)
{
kasa->m_toplamPara = 0;
kasa->m_toplamPara += kasa->m_birLira + kasa->m_elliKurus * 0.5 + kasa->m_onKurus * 0.1 + kasa->m_besKurus * 0.05;
}
int ParaCek(PARA *kasadan, double deger, PARA *disariya)
{
double kalan = kasadan->m_toplamPara - deger; /* Kasada yerei kadar para yoksa işlem yapmaz */
if (kalan < 0)
return FALSE;
ParaYatir(disariya, deger);
/*if (disariya->m_birLira > kasadan->m_birLira)
{
int birLiraFark = disariya->m_birLira - kasadan->m_birLira;
Zurananın zırt dediği yer burası dediğim gibi düşünüp yazmak gerekir.
Fazla zor birşey değil gibi. Bir lira yerine 50 kuruş veriyorsun .Sonra onlarında
kontrolünü yapıyorsun....
}
*/
/* Kasadaki para güncelleniyor */
kasadan->m_birLira = 0;
kasadan->m_besKurus = 0;
kasadan->m_elliKurus = 0;
kasadan->m_onKurus = 0;
kasadan->m_toplamPara = 0;
ParaYatir(kasadan, kalan);
return TRUE;
}