Bozuk para üstü yardım

emre1910

Üye
Katılım
4 Ağu 2012
Mesajlar
8
Puanları
1
Yaş
32
Arkadaşlar c18 dilinde bozuk para üstü gösteren bir program yazmam gerekiyor. ancak yazarken bozuk paralardan kaç adet olduğunu(mesela 1 liralıktan 5 tane 50 krşluktan 10 tane gibi ..),ürün fiyatı ve müşterinin verdiği parayı kendimiz girmeliyiz .para üstünüde hangi bozuk paralardan çoksa (mesela 1 liralık çok) ona öncelik tanıması gerekmekte .Ancak programın mantığını tam oturtamadım c18 dilinden anlayan yardımcı olacak arkadaş varmı ? Teşekkür ederim .
 
Orda 1 liralar varken sen tutup çok diye 10 kuruşları harcadın. Kuruş lazım olduğunda nolcak. Hem müşteri arıza çıkarmayacak mı bi ton Demir para verdiğinde.
 
Programlama dilinden önce eline kağıt kalemi alacaksınız, algoritmayı çıkaracaksınız. Program akışı oturduktan sonra programı yazacaksınız.(implementasyon) Program akışında açık olmayacak her türlü olasılığı düşüneceksiniz.
 
Kod:
#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, &paraUstu) == 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;
}

Basitçe yazdım. Dediğim gibi, mesela ben yazarkende farkettim , önce kalem kağıt lamka lazım. Çünkü yazarken bazı yerlerde tıkanıyorsun...
 
C18 dilinde (pic18f452 kullanacağım) butonları kullanarak tek tek artırarak kasadaki mevcut parayı güncellemeyi ve verilen parayı ekranda görüntülemeyi sağladım ancak bu şekilde yeni bir butona basıldığında ürün fiyatını görüntüleme kısmında o döngüye girmiyor bir nevi enter tuşu gibi kullanmak istiyorum butonu ancak döngü sağlanmıyor ekranda görüntülenmiyor bu kısımda yardımcı olabilecek var mı? teşekkürler tekrardan
 

Yeni mesajlar

Forum istatistikleri

Konular
127,965
Mesajlar
913,961
Kullanıcılar
449,611
Son üye
ramazansanli@

Yeni konular

Geri
Üst