Arka arkaya girilen 10 sayıdan istenilen bir sayıya en yakın olan sayıyı bulan algoritmayı yazınız.
İstenilen sayıyı girmek.
10 tane değer girmek.
En yakın değeri bulmak.
En yakın değeri ekrana yazdırmak.
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.
Değişkenlerin tanımlanması.
sayi
nın girilmesi.
İlk x
değerinin girilmesi.
İlk değere göre değişkenlere değer atanması.
(10-1) kere dönen döngünün oluşturulması.
x
in girilmesi.
Koşullar kontrol edilirken yakinlik
ve enyakin
değerlerin değiştirilmesi.
Sonuçların yazdırılması.
#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 girilmesicin >> x; // İlk “x” değerinin girilmesienyakin = 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ştirilmesiif (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;}
enyakin2 = 0; yakinlik2 = -1;sayi = int(input()) # “sayi”nın girilmesix = int(input()) # İlk “x” değerinin girilmesi# İlk değere göre değişkenlere değer atanmasıenyakin = xyakinlik = 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ştirilmesiif abs(x - sayi) < yakinlik:yakinlik = abs(x - sayi)enyakin = xelse:if abs(x - sayi) == yakinlik:if x != enyakin:yakinlik2 = yakinlikenyakin2 = xif (yakinlik2 == yakinlik):print("Diger en yakin sayi= ", enyakin2)print("En yakin sayi= ", enyakin)
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 girilmesix = 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ştirilmesiif (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();}}
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 girilmesix = 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ştirilmesiif (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();}}}
51 9 0 88 3 4 2 2 11 10En yakin sayi= 4
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.
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.