Links
🧲

En Yakın Sayıyı Bulmak

❓ Soru

Arka arkaya girilen 10 sayıdan istenilen bir sayıya en yakın olan sayıyı bulan algoritmayı yazınız.

⛓ Program Kısımları

  1. 1.
    İstenilen sayıyı girmek.
  2. 2.
    10 tane değer girmek.
  3. 3.
    En yakın değeri bulmak.
  4. 4.
    En yakın değeri ekrana yazdırmak.

👓 Çözüm Yöntemi

  • Yakınlık (a ,b) = |a-b| olduğu bellidir.
  • Her değer girildiğinde yakınlığını hesaplayıp önceki yakınlıkla karşılaştırırız.

👩‍🔧 Çözüm Adımları

  1. 1.
    Değişkenlerin tanımlanması.
  2. 2.
    sayinın girilmesi.
  3. 3.
    İlk x değerinin girilmesi.
  4. 4.
    İlk değere göre değişkenlere değer atanması.
  5. 5.
    (10-1) kere dönen döngünün oluşturulması.
    • xin girilmesi.
    • Koşullar kontrol edilirken yakinlik ve enyakin değerlerin değiştirilmesi.
  6. 6.
    Sonuçların yazdırılması.

🤖 Kod

⚙ C++ Kodu

#include <iostream>
using namespace std;
int main()
{
int x, sayi, yakinlik, enyakin, i; // Değişkenlerin tanımlanması
int enyakin2 = 0, yakinlik2 = -1;
cin >> sayi; // “sayi”nın girilmesi
cin >> x; // İlk “x” değerinin girilmesi
enyakin = x; // İlk değere göre değişkenlere değer atanması
yakinlik = abs(x - sayi);
for (i = 0; i < 9; i++) {
cin >> x; // “x”in girilmesi
// Koşullar kontrol edilirken “yakinlik” ve “enyakin” değerlerin değiştirilmesi
if (abs(x - sayi) < yakinlik) {
yakinlik =abs(x - sayi);
enyakin = x;
} else if (abs(x - sayi) == yakinlik) {
if (x != enyakin) {
yakinlik2 = yakinlik;
enyakin2 = x;
}
}
}
if (yakinlik2 == yakinlik)
cout << "Diger en yakin sayi= " << enyakin2;
cout << "En yakin sayi= " << enyakin;
}

🐍 Python Kodu

enyakin2 = 0; yakinlik2 = -1;
sayi = int(input()) # “sayi”nın girilmesi
x = int(input()) # İlk “x” değerinin girilmesi
# İlk değere göre değişkenlere değer atanması
enyakin = x
yakinlik = abs(x - sayi)
for i in range(0,9):
x = int(input()) # “x”in girilmesi
# Koşullar kontrol edilirken “yakinlik” ve “enyakin” değerlerin değiştirilmesi
if abs(x - sayi) < yakinlik:
yakinlik = abs(x - sayi)
enyakin = x
else:
if abs(x - sayi) == yakinlik:
if x != enyakin:
yakinlik2 = yakinlik
enyakin2 = x
if (yakinlik2 == yakinlik):
print("Diger en yakin sayi= ", enyakin2)
print("En yakin sayi= ", enyakin)

☕ Java Kodu

import java.util.*;
public class YakiniBulmak {
public static void main(String arg[]) {
Scanner input = new Scanner(System.in);
// Değişkenlerin tanımlanması
int x, sayi, yakinlik, enyakin, i, enyakin2 = 0, yakinlik2 = -1;
sayi = input.nextInt(); // “sayi”nın girilmesi
x = input.nextInt(); // İlk “x” değerinin girilmesi
// İlk değere göre değişkenlere değer atanması
enyakin = x;
yakinlik = Math.abs(x - sayi);
for (i = 0; i < 9; i++) {
x = input.nextInt(); // “x”in girilmesi
// Koşullar kontrol edilirken “yakinlik” ve “enyakin” değerlerin değiştirilmesi
if (Math.abs(x - sayi) < yakinlik) {
yakinlik = Math.abs(x - sayi);
enyakin = x;
} else if (Math.abs(x - sayi) == yakinlik) {
if (x != enyakin) {
yakinlik2 = yakinlik;
enyakin2 = x;
}
}
}
if (yakinlik2 == yakinlik)
System.out.println("Diger en yakin sayi= " + enyakin2);
System.out.println("En yakin sayi= " + enyakin);
input.close();
}
}

⏹ C# Kodu

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace YakiniBulmak
{
class Program{
static void Main(string[] args){
// Değişkenlerin tanımlanması
int x, sayi, yakinlik, enyakin, i, enyakin2 = -1, yakinlik2 = -1;
sayi = Convert.ToInt32(Console.ReadLine()); // “sayi”nın girilmesi
x = Convert.ToInt32(Console.ReadLine()); // İlk “x” değerinin girilmesi
// İlk değere göre değişkenlere değer atanması
enyakin = x;
yakinlik = Math.Abs(x - sayi);
for (i = 0; i < 9; i++){
x = Convert.ToInt32(Console.ReadLine());
// Koşullar kontrol edilirken “yakinlik” ve “enyakin” değerlerin değiştirilmesi
if (Math.Abs(x - sayi) < yakinlik){
yakinlik = Math.Abs(x - sayi);
enyakin = x;
}
else if (Math.Abs(x - sayi) == yakinlik){
if (x != enyakin){
yakinlik2 = yakinlik;
enyakin2 = x;
}
}
}
if (yakinlik2 == yakinlik)
Console.WriteLine(enyakin2);
Console.WriteLine(enyakin);
Console.ReadLine();
}
}
}

🧩 Akış Şeması

🎉 Ekran Çıktısı

5
1 9 0 88 3 4 2 2 11 10
En yakin sayi= 4

💡 Notlar

  1. 1.
    Bir yakınlık önceki yakınlığa eşitse 2 durum olabilir:
    • Yakınlık(2) = yakınlık(1) ise:
      • Ya : sayı(2) = sayı(1)sayı tekrarlı.
      • Ya da: sayı (2) = 2*x – sayı(1) ➡ sayıların ikisi aynı yakınlıkta, sayı(2) değerini enyakın2 değişkenine atarız.
  2. 2.
    Döngüden çıktıktan sonra yakinlik = yakinlik2 ise aynı yakınlıkta iki sayı bulunmuş olur, dolayısıyla ikisini yazdırmalıyız.