C# Console Bir sayının yaklaşık olarak karekökünü hesaplama
Algoritma
- Başla
- x,a,b,i=2 değişkenlerini al
- x değerini gir
- Eğer ( i * i ) > a ise b = i * 1, a = ( i – 1) ( i – 1), değilse i++ 4’e git
- x = ( i – 1 ) + ( ( x – a ) / ( b – x ) )
- Yazdır x
- Bitir
Bu soru, ÖSYM’nin yaptığı ales sınavının birinde bir yaklaşım sorusu olarak karşımıza çıkmıştır.Bu yaklaşımı kendimize göre ayarlayıp çözümünü göreceğiz. Bu soruda girilen tam kare olmayan sayının yaklaşık olarak değerini hesaplayan algoritma söz konusudur. Burada amaç a < x < b mantığına göre değişir. x girilen sayımız, a da x ten küçük en yakın tam karesi olan sayı, b ise x’ten büyük en yakın tam karesi olan sayıdır.Bu değerleri algoritma bulacak ona göre formüle yerleştirip bize float yani ondalıklı sayı olarak sonuç verecektir.
Kod Yapısı
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace dmg
{
class Program
{
static void Main(string[] args)
{
double a , b , i = 1;
double x;
Console.Write("Sayıyı giriniz = ");
x = Convert.ToDouble( Console.ReadLine() );
dnz:
if( i * i > x )
{
b = i * i;
a = ( i - 1 ) * ( i - 1 );
}
else
{
i++;
goto dnz;
}
x = ( i - 1 ) + ( ( x - a ) / ( b - x ) );
Console.WriteLine("Sonuç = " + x);
Console.ReadKey();
}
}
}
2 Ocak 2018