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.
Rakamları birbirinden ve sıfırdan farklı üç basamaklı bir doğal sayının onlar basamağındaki rakam diğer basamaklarındaki rakamları tam bölüyorsa bu sayıya ortakatlı sayı denir.
Örneğin, 428 bir ortakatlı sayıdır.
Buna göre, en büyük ortakatlı sayı ile en küçük ortakatlı sayının farkı kaçtır?
A) 723 B) 727 C) 736 D) 742 E) 745
Bu kurala göre en büyük sayı 936 olur. En küçük sayı ise 213 olur. Aralarındaki sayı farkı 936 – 213 = 723 olur. Buna göre doğru cevap A şıkkıdır.
Şimdi kodlarımızı düzenleyelim.
1. Web Forms Projesi Oluşturma
Visual Studio'da yeni bir "ASP.NET Web Application (.NET Framework)" projesi oluşturun ve "Web Forms" şablonunu seçin.
2. OrtaKatli.aspx Sayfasını Düzenleme
OrtaKatli.aspx dosyasını aşağıdaki şekilde güncelleyin:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Ortakatlı Sayı Hesaplama</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Ortakatlı Sayı Hesaplama</h1>
<asp:Button ID="btnCalculate" runat="server" Text="Hesapla"
OnClick="btnCalculate_Click" />
<br />
<br />
<asp:Label ID="lblResult" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
3. OrtaKatli.aspx.cs Kod Arkası Dosyasını Düzenleme
OrtaKatli.aspx.cs dosyasını aşağıdaki şekilde güncelleyin:
protected void btnCalculate_Click(object sender, EventArgs e)
{
int largest = 0;
int smallest = 1000; // 3 basamaklı bir sayıdan büyük
for (int i = 100; i < 1000; i++)
{
int[] digits = i.ToString().Select(d =>
int.Parse(d.ToString())).ToArray();
int a = digits[0], b = digits[1], c = digits[2];
// Rakamlardan herhangi biri 0 ise devam et
if (a == 0 || b == 0 || c == 0) continue;
// Rakamlar birbirinden farklı değilse devam et
if (digits.Distinct().Count() != 3) continue;
// Ortakatlı sayı kontrolü
if (a % b == 0 && c % b == 0)
{
if (i > largest) largest = i;
if (i < smallest) smallest = i;
}
}
int difference = largest - smallest;
lblResult.Text = $"En büyük ortakatlı sayı: {largest},
En küçük ortakatlı sayı: {smallest}, Fark: {difference}";
}
OrtaKatli.aspx dosyasında bir buton ve bir etiket (Label) ekledik. Buton tıklandığında btnCalculate_Click metodu çalışacak ve sonuç etikete yazdırılacak.
OrtaKatli.aspx.cs dosyasında, btnCalculate_Click metodu ortakatlı sayıları hesaplayacak.
largest ve smallest değişkenleri en büyük ve en küçük ortakatlı sayıları tutmak için kullanılır.
100'den 999'a kadar sayılar kontrol edilerek her sayının rakamları analiz edilir.
Her rakamın birbirinden farklı ve sıfırdan farklı olup olmadığı kontrol edilir.
Onlar basamağındaki rakamın diğer basamakları tam bölüp bölmediği kontrol edilir.
Eğer şartlar sağlanıyorsa, en büyük ve en küçük ortakatlı sayılar güncellenir.
Fark hesaplanarak sonuç etikete yazdırılır.
Bu şekilde, ASP.NET Web Forms kullanarak ortakatlı sayıları hesaplayan ve en büyük ile en küçük ortakatlı sayılar arasındaki farkı gösteren bir uygulama oluşturabilirsiniz.
Şimdi Bootstrap ile web sayfasını dizayn edelim. OrtaKatli.aspx sayfasını aşağıdaki gibi düzenleyelim.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Ortakatlı Sayı Hesaplama</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/
dist/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/
dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div class="container mt-5">
<div class="row">
<div class="col-sm-12">
<h1>Ortakatlı Sayı Hesaplama</h1>
<asp:Button ID="btnCalculate" runat="server"
CssClass="btn btn-primary" Text="Hesapla" OnClick="btnCalculate_Click" />
<br />
<br />
<asp:Label ID="lblResult" runat="server" Text=""
CssClass="alert alert-info"></asp:Label>
</div>
</div>
</div>
</form>
</body>
</html>