Yeni bir matematik sorusunun çözümüyle karşınızdayız. Bu sorumuz 2020 TYT sorusu. Sorumuz aşağıda yer almaktadır. Amacımız programlama tekniğini kullanarak sorunun çözümünü yapmak. Hem matematik hem de programlama alanında kendimizi geliştirmek istiyoruz. Sorumuzu ve çözümünü inceleyelim.
Bir para çekme makinesi, istenilen miktardaki parayı 5 TL, 10 TL, 20 TL, 50 TL ve 100 TL değerindeki kâğıt paralardan en az sayıda kullanarak vermektedir. Her kâğıt paradan yeterli sayıda bulunan bu para çekme makinesinden; Ahmet 495 TL, Buse 265 TL ve Cansu 550 TL para çekiyor.
Para çekme makinesinin Ahmet, Buse ve Cansu’ya verdiği kâğıt para sayıları sırasıyla olduğuna göre, aşağıdaki sıralamalardan hangisi doğrudur?
A) PA < PB < PC B) PA < PC < PB C) PB < PA < PC
D) PB < PC < PA E) PC < PB < PA
PA = 4.100 + 1.50 + 2.20 + 1.5 = 8
PB = 2.100 + 1.50 + 1.10 + 1.5 = 5
PC = 5.100 + 1.50 = 6
Buna göre doğru cevap D şıkkıdır.
Şimdi kodlarımızı düzenleyelim.
static void Main(string[] args)
{
int[] banknot = { 100, 50, 20, 10, 5 };
Person[] para = {
new Person(){ Adet=0, Para=495, Eleman="Pa"},
new Person(){ Adet=0, Para=265, Eleman="Pb"},
new Person(){ Adet=0, Para=495, Eleman="Pc"}
};
int kp = 0; // Kalan para
int par = 0;
for (int p = 0; p < para.GetLength(0); p++)
{
par = para[p].Para;
for (int b = 0; b < banknot.Length; b++)
{
para[p].Adet += par / banknot[b];
kp = par % banknot[b];
if (kp == 0)
{
break;
}
else
{
par = kp;
}
}
}
Array.Sort(para, (x, y) => {
int ret = String.Compare(x.Adet.ToString(), y.Adet.ToString());
return ret != 0 ? ret : x.Eleman.CompareTo(y.Eleman);
});
//var qry = from p in para
// orderby p.Adet
// select p;
//Array.ForEach<Person>(qry.ToArray<Person>(), p => Console.WriteLine(p.Adet + " " + p.Eleman));
for (int p = 0; p < para.GetLength(0); p++)
{
if (p>0)
{
if (para[p].Adet == para[p-1].Adet)
{
Console.Write(" = ");
}
else
{
Console.Write(" < ");
}
}
Console.Write(para[p].Eleman);
}
Console.ReadKey();
}
class Person
{
public int Adet { get; set; }
public int Para { get; set; }
public string Eleman { get; set; }
}