Programlama ve Algoritma

Ugur Bey

Hectopat
Katılım
18 Haziran 2014
Mesajlar
13
Daha fazla  
Cinsiyet
Erkek
Merhabalar bır tane sorum olacaktı. Yardımcı olursanız sevınırım.

1)Bır ıle 99 arasındaki tek ve çift sayıların toplamları ıle carpımlarını ayrı ayrı hesaplayan programın algorıtmasını hazırlayınız.
 
Son düzenleyen: Moderatör:
Nerede yazacaksınız kodu C#'da yardımcı olabilirim size. Pardon siz algoritma soruyorsunuz.
Algoritma ve Akış Diyagramı Örnekleri ( Döngülü Akış Diyagramları )
Sitesine girin ordaki akış şemaları üzerinde değişiklik yapın.
Başla kısmından sonra başlangıç, bitiş, tekmi çiftmi (bool), çarpım mı toplama mı (bool) girişlerini alın.
Daha sonra şemayı ikiye bölün bir kısıma çarpım diğer kısma toplama bölümlerini ekleyeceksiniz. İkisi de aynı olacak sadece biri çarpım diğeri toplam olacak.
Ondan sonra for döngüsünün olacağı algoritma kısımı olacak. Devamını sitedeki bilgilere göre hazırlayabilirsiniz.
 
Son düzenleme:
@Ugur Bey Buyrun denemedim hata alabilirsiniz, alırsanız yorum atmanız yeterli.

Kod:
int tToplam, tCarpim, cToplam, cCarpim;

for(int a=1; a<100; a++)
{
    if(a%2==0)
    {
        cToplam+=a;
        cCarpim*=a;
    }
    else
    {
        tToplam+=a;
        tCarpim*=a;
    }
}

Console.WriteLine("Tek sayıların çarpımı: {0}", tCarpim);
Console.WriteLine("Tek sayıların toplamı: {0}", tToplam);
Console.WriteLine("Çift sayıların çarpımı: {0}", cCarpim);
Console.WriteLine("Çift sayıların toplamı: {0}", cToplam);

Console.ReadLine();
 
Fatih Bey @fozbek,
Arkadaş sadece programın algoritmasını istiyordu.
Sizin programınızdaki hataları düzelttim. Doğrusunu inceleyebilirsiniz.
1. Hatanız int veri tipine değer atamadan kullanamazsınız. Toplam için etkisiz eleman 0'ı, çarpım için etkisiz eleman 1'i değer atamalıydınız.
2. Hatanız int veri tipi 32bit olduğundan ((2^32)/2)-1 = 2,147,483,647 sayısından büyük sayı tutamaz. Bu iş için ulong veri tipi bile yetersiz kalır. Net Framework 4 ile sunulan BigInteger veri tipini kullanmalısınız.
Doğrusu şu şekilde olmalıydı.
Kod:
            int tToplam = 0; // 0 olma sebebi toplama işleminin etkisiz elemanı 0'dır.
            int cToplam = 0;

            // Büyük Sayılar için kullanılan veri tipi BigInteger Net Framework 4.0 ile geldi.
            BigInteger tCarpim = 1;
            BigInteger cCarpim = 1; // 1 olma sebebi çarpma işleminin etkisiz elemanı 1'dir.
    

            for (int a = 1; a < 100; a++)
            {
                if (a % 2 == 0)
                {
                    cToplam += a;
                    cCarpim *= a;
                }
                else
                {
                    tToplam += a;
                    tCarpim *= a;
                }
            }

            Console.WriteLine("Tek sayıların çarpımı: {0}", tCarpim);
            Console.WriteLine("Tek sayıların toplamı: {0}", tToplam);
            Console.WriteLine("Çift sayıların çarpımı: {0}", cCarpim);
            Console.WriteLine("Çift sayıların toplamı: {0}", cToplam);

            Console.ReadLine();

Sonuç:
Tek sayıların çarpımı: 2725392139750729502980713245400918633290796330545803413734328823443106201171875
Tek sayıların toplamı: 2500
Çift sayıların çarpımı: 342432247025119762482464328952081859751186750537191988279156544634880000000000
Çift sayıların toplamı: 2450

Sağlama:
Tek ardışık sayı toplamı:
1 + 3 + 5 + .... + (2n − 1) = n.n=n^2
1 + 3 + 5 + .... + (2.50 − 1) = 50^2 = 2500

Çift ardışık sayı toplamı:
2 + 4 + 6 + ... + 2n = n.(n+1)
2 + 4 + 6 + ... + 98 = 49.(49+1) = 2450

Tek ardışık sayı çarpımı:
Formülü var mı bilmiyorum. Ama içinde 5 sayısı olduğu için ve çift çarpan olmadığı için sonu 5 ile biteceği kesin.

Çift ardışık sayı çarpımı:
Çarpım içerisinde 10, 20, 30, 40, 50, 60, 70, 80, 90 var. Bu sayıların çarpımından 10 tane sıfır sona gelecektir.
Niye 9 gelmiyor. Çünkü 20*50 = 1000 yani 3 sıfır geliyor. Kalan 7 sayıdan da 7 sıfır geliyor, etti 10 sıfır. Sonuca bakın sonra 10 tane sıfır göreceksiniz.
Böylece niye Windows 10 sorusunun da cevabını vermiş olduk. :D
 
Son düzenleme:
Uyarı! Bu konu 10 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı