C# Delegate ile Dizideki Sayıları Çarpıp Toplama

hystaspes
08-01-2019, 17:38   |  #1  
hystaspes avatarı
OP Taze Üye
Teşekkür Sayısı: 0
3 mesaj
Kayıt Tarihi:Kayıt: Oca 2019

Herkese selam arkadaşlar. Yapmaya çalıştığım program : 1-100 arasında rastgele üretilen yirmi adet sayıyı kullanarak üretilen sayıların elli rakamından büyük olması durumunda sayıların çarpımı için tanımlanan delegate, elli rakamından küçük olması halinde sayıların toplamı için tanımlanan delegate'i çalıştıracak program. Aşağıda ki şekilde yaptığımda enteresan sonuçlar elde ettim ve delegate'i bir türlü kullanamadım. Yardımcı olabilirseniz sevinirim. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp9
{
    class Program
    {
        public delegate int matematiksel(int[] dizi);
        public static int topla(int[] dizi)
        {
            int toplam = 0;
            for (int i = 0; i < dizi.Length; ++i)
            {
                toplam += dizi;
            }
            return toplam;
        }
        public static int carp(int[] dizi)
        {
            int carp = 0;
            int toplam = 0;
            for (int i = 0; i < dizi.Length; ++i)
            {
                toplam += dizi;
            }
            carp = (int)toplam * (dizi.Length);
            return carp;
        }
        static void Main(string[] args)
        {
            Random rnd = new Random();
            int[] sayilar = new int[20];
            for (int i = 0; i < sayilar.Length; i++)
            {
                sayilar= rnd.Next(1, 100);
                Console.WriteLine("Rastgele üretilip diziye giren sayılar"+sayilar);
                if(sayilar< 50)
                {
                    matematiksel mat = new matematiksel(topla);
                    Console.WriteLine("Dizi içindeki sayıların toplamı :" + mat(sayilar));
                }
                else if(sayilar> 50)
                {
                    matematiksel mat = new matematiksel(carp);
                    Console.WriteLine("Dizi içindeki sayıların çarpımı :" + mat(sayilar));
                }
            }
            Console.ReadKey();
        }
    }
}

Adem Bey
02-04-2019, 03:00   |  #2  
Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: Nis 2019

Rastgele sayıları vs. doğruca kodlamışsın. Sadece toplama/çarpma kısmının basitleştirilmiş halini atayım sorunun üstesinden gelemezsen tekrar beraber bakarız :)

            int toplanacak = 0;
            int carpim = 1;
            for(int i = 0; i <= KaçTaneSayıÜretilecekse; i++)
            {
                if(dizi < 50)
                {
                    toplanacak += dizi;
                    return toplanacak;
                }
                else
                {
                    carpim *= dizi;
                    return carpim;
                }
            }
            return 0;

bu şekilde tek bir fonksiyon içinde ayırabilirsin.