IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

 Kayıt ol  Topluluk
Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 21 Mart 2016, 14:30   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
1′den 1000′e kadar olan sayıların toplamını bulup sonucu ekranda gösteren program




Kod:   Kodu kopyalamak için üzerine çift tıklayın!
int toplam = 0; for (int i = 0; i <= 1000; i++) { toplam += i; } Console.WriteLine("Toplam = {0}", toplam); Console.ReadKey();


__________________
SusKun ve Sessiz Mürekkep...


Kullanıcı imzalarındaki bağlantı ve resimleri görebilmek için en az 20 mesaja sahip olmanız gerekir ya da üye girişi yapmanız gerekir.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Alt 17 Nisan 2023, 12:12   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: 1′den 1000′e kadar olan sayıların toplamını bulup sonucu ekranda gösteren program




Hani bunun için bu kadar uzun 1000 döngülük sorgu yapmak yerine, güzelim matematiğimizin güzelim imkanlarını kullansak daha iyi olmaz mı.

Bir sayı kümesindeki sayıların toplamını bulmanın çok basit bir fomülü var;

Alıntı:
Sn = (bitiş - (başlangıç - 1)) * ((başlangıç + bitiş) / 2)

Bu formülle 1 ile 1000 arasındaki sayıların toplamını konsola bu şekilde basitçe yazdırabiliriz.
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Console.WriteLine(Convert.ToInt64(1000.0 * (1001.0) / 2.0));

Bu formülün iyi yanı 10000000 tane veriyi bile sorgulamadan kolaylıkla hesaplayabilirsin
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Console.WriteLine(Convert.ToInt64(1000000.0 * (1000001.0) / 2.0));

1 yerine farklı bir sayıdan başlarsak formül şöyle olmalı;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Console.WriteLine(Convert.ToInt64((728.0 - (18.0 - 1.0)) * ((18.0 + 728.0) / 2.0)));

Burada 18-728 arasını aldık mesela.

Niye float kullandığıma da gelirsek, integer noktalı sayılardan oluşamaz ve toplamı 2 ye böldüğümüz durumlar var bu nedenle çarpmada 0.5lik sapmalar olmaması için float olarak kullanılması gerekir.

Artış belirtilen sayılarda formül az daha karışıyor çünkü kalan değerler giriyor ortaya mesela 7-100 arasındaki her 5 sayıyı alırsak 97 son değer olmalı yani -3 lük bir kayma söz konusu bunun için ise formül;

Alıntı:
Sn = (((bitiş - kalan((bitiş - başlangıç) / artış)) - (başlangıç - artış)) / artış) * ((başlangıç + (bitiş - kalan((bitiş - başlangıç) / artış))) / 2)

şeklinde olmalıdır.
Artışlı sayılara da örnek vereyim, mesela 7 ile 100000 arasındaki her 5 rakamı toplamak istiyoruz diyelim 5+10+15+20 gibi
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Console.WriteLine(Convert.ToInt64((((100000.0 - ((100000.0 - 7.0) % 5.0)) - (7.0 - 5.0)) / 5.0) * ((7.0 + (100000.0 - ((100000.0 - 7.0) % 5.0))) / 2.0)));

Her ne kadar buradan bakınca karmaşık görünse de büyük sayılar işin içine girdiğinde optimizasyonu ancak bu şekilde matematiğin faydalarını kullanarak sağlayabiliriz. 1000 sorgu c# için saliseler içinde yapılabilecek bir şey olabilir, ancak formüllerle bunu hiç bir sorgu yapmadan çok daha optimize bir şekilde yapmak mümkün. O yüzden matematiği sevelim
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Arithmetic Sequence nedir, formülleri nasıldır buradan bakabilirsiniz;
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].
Türkçe kaynak:
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].[COLOR="Silver"]


Konu xwerswoodx tarafından (17 Nisan 2023 Saat 11:13 ) değiştirilmiştir.
 
Alıntı ile Cevapla

Cevapla

Etiketler
1′den 1000, toplama


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Need For Speed’in Tarihçesi: 1995′den 2013′e NFS Tarihi AftieL Bilgisayar Oyunları 2 11 Ağustos 2014 18:35
1′den 49′a Kadar Girilen İle Tutulan Sayılardan Eşleşenleri Bulma aSi C ve C++ 0 24 Şubat 2012 22:26
Witcher 2′nin Xbox 360′a çıkışı ertelenebilir KarakıZ Oyun Dünyasından Son Haberler 0 17 Ocak 2012 14:48
2009′dan 2010′a Kalan Trendler YapraK Ah Kadınlar 0 05 Mart 2010 01:10